这个问题在这里已有答案:
dplyr非常快,但我想知道我是否遗漏了一些东西:是否有可能总结出几个变量 . 例如:
library(dplyr)
library(reshape2)
(df=dput(structure(list(sex = structure(c(1L, 1L, 2L, 2L), .Label = c("boy",
"girl"), class = "factor"), age = c(52L, 58L, 40L, 62L), bmi = c(25L,
23L, 30L, 26L), chol = c(187L, 220L, 190L, 204L)), .Names = c("sex",
"age", "bmi", "chol"), row.names = c(NA, -4L), class = "data.frame")))
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))
而且我知道,为了得到我想要的东西,我可以融化,获得手段,然后如dcast
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?
谢谢你的帮助
2 回答
data.table
成语是lapply(.SD, mean)
,即我不确定同一个东西,但你可以做类似的事情
请注意,有一个github问题#178可以有效地实现
dplyr
中的plyr
idiomcolwise
.dplyr
现在summarise_each
: