dplyr非常快,但我想知道是否有什么我错过的东西:是否可以对多个变量进行汇总。例如:
library(dplyr)
library(reshape2)
df <- data.frame(
sex = factor(rep(c("boy", "girl"), each = 2L)),
age = c(52L, 58L, 40L, 62L),
bmi = c(25L, 23L, 30L, 26L),
chol = c(187L, 220L, 190L, 204L)
)
df
sex age bmi chol
1 boy 52 25 187
2 boy 58 23 220
3 girl 40 30 190
4 girl 62 26 204
dg=group_by(df,sex)
通过这个小数据框,编写起来很容易
summarise(dg,mean(age),mean(bmi),mean(chol))
我知道要得到我想要的,我可以融合、获取手段,然后进行强制类型转换
dm=melt(df, id.var='sex')
dmg=group_by(dm, sex, variable);
x=summarise(dmg, means=mean(value))
dcast(x, sex~variable)
但是如果我有超过20个变量和非常多的行,该怎么办?是否有类似于data.table中的 .SD 的东西,可以让我在分组数据框中计算所有变量的平均值?或者,是否可能在分组数据框上使用lapply?
感谢任何帮助
data.table
的解决方案在这里将是最快和更有效的。但您也可以拥有一个好的 "reshape2
only" 解决方案:dcast(melt(df, id = "sex"), sex ~ variable, fun.aggregate = mean)
。 - dickoa