跨数据框的条件均值语句
Conditional Mean Statement Across Dataframe
下面的代码将return平均条件为月份大于6。
mean(df[df$delta1>6, "delta1"], na.rm=T)
现在,我该如何将其应用于数据框中的每一列?
df:
delta1 delta2 delta3
NA 2 3
4 NA 6
7 8 NA
10 NA 12
NA 14 15
16 NA 18
19 20 NA
我们可以将数据框中小于等于 6 的值设置为 NA
并使用 colMeans
计算平均值,忽略 NA
值。
df[df <= 6] <- NA
colMeans(df, na.rm = TRUE)
#delta1 delta2 delta3
# 13 14 15
数据
df <- structure(list(delta1 = c(NA, 4L, 7L, 10L, NA, 16L, 19L), delta2 = c(2L,
NA, 8L, NA, 14L, NA, 20L), delta3 = c(3L, 6L, NA, 12L, 15L, 18L,
NA)), class = "data.frame", row.names = c(NA, -7L))
apply-family 函数在这里很有用:
sapply(df, function(x) mean(x[x>6], na.rm=T))
下面的代码将return平均条件为月份大于6。
mean(df[df$delta1>6, "delta1"], na.rm=T)
现在,我该如何将其应用于数据框中的每一列?
df:
delta1 delta2 delta3
NA 2 3
4 NA 6
7 8 NA
10 NA 12
NA 14 15
16 NA 18
19 20 NA
我们可以将数据框中小于等于 6 的值设置为 NA
并使用 colMeans
计算平均值,忽略 NA
值。
df[df <= 6] <- NA
colMeans(df, na.rm = TRUE)
#delta1 delta2 delta3
# 13 14 15
数据
df <- structure(list(delta1 = c(NA, 4L, 7L, 10L, NA, 16L, 19L), delta2 = c(2L,
NA, 8L, NA, 14L, NA, 20L), delta3 = c(3L, 6L, NA, 12L, 15L, 18L,
NA)), class = "data.frame", row.names = c(NA, -7L))
apply-family 函数在这里很有用:
sapply(df, function(x) mean(x[x>6], na.rm=T))