跨数据框的条件均值语句

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))