【发布时间】:2016-03-09 17:00:12
【问题描述】:
我想为我的所有列使用 dplyr 包对我的数据框进行平均处理。
n = c(NA, 3, 5)
s = c("aa", "bb", "cc")
b = c(3, 0, 5)
df = data.frame(n, s, b)
在这里,我希望我的函数在 n 和 b 列中得到 mean = 4
我试过mean(df$n[df$n>0]) 但对于大型数据框来说并不容易。
我想要df %>% summarise_each(funs(mean))之类的东西...
谢谢
【问题讨论】:
-
只用
my_mean <- function(x) mean(x[x != 0],na.rm = TRUE)?您希望s列发生什么? -
大概可以
df %>% summarise_each(funs(mean(.[!is.na(.) & . != 0])), -s)。或df %>% summarise_each(funs(mean(.[. != 0], na.rm = TRUE)), -s)类似于 jorans 的建议。 -
感谢大卫完美! “-s”是什么意思?
-
表示不包含
s列,因为它是非数字的 -
感谢您的快速答复!