通过另一个数据集合在一个data.frame中汇总数据

时间:2016-05-11 17:10:22

标签: r

我有一个很大的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中是否有更优雅/更有效的方法来实现这一目标?

1 个答案:

答案 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) )