我有一个很大的data.frame,我想通过另一个分类变量的分组来聚合。一种方法是:
cars = mtcars
carb_grps = data.frame(carb = 1:8, carb_grp = rep(c('Low','Mid','High'), c(2,2,4)))
cars = merge(cars, carb_grps, by = 'carb')
aggregate(mpg ~ carb_grp, cars, mean)
carb_grp mpg
1 High 17.35000
2 Low 23.61176
3 Mid 15.90769
但是这复制了大数据中的所有carb_grp
细节。我猜测它会占用更多内存?我想知道在R中是否有更优雅/更有效的方法来实现这一目标?
答案 0 :(得分:0)
我认为这是一个很好的方法。这是dplyr的等价物。
library(dplyr)
data_frame(carb = 1:8,
carb_grp = rep(c('Low','Mid','High'),
c(2,2,4) ) ) %>%
right_join(mtcars) %>%
group_by(carb_grp) %>%
summarize(mpg = mean(mpg) )