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 переменных и очень большое количество строк. Есть ли что-то похожее на .SD в data.table, что позволило бы мне использовать средства всех переменных в сгруппированном кадре данных? Или, возможно ли как-то использовать привязку к сгруппированному кадру данных?
Спасибо за любую помощь