如何将函数应用于data.frame的子集而不手动创建子集?

如何将函数应用于data.frame的子集而不手动创建子集?,r,dataframe,aggregate,apply,R,Dataframe,Aggregate,Apply,假设我有一个data.frame Color Animal Size Green Frog 2 Red Frog 5 Green Frog 1 Red Frog 6 如果我要应用函数mean,我想得到一个 Color Animal AverageSize Green Frog 1.5 Red Frog 5.5 感谢基本R中最直接的方法是使用聚合: > aggregate(Size ~ ., mydf, mean) Color Animal Size 1 Gree

假设我有一个data.frame

Color Animal Size
Green Frog  2
Red   Frog  5
Green Frog  1
Red   Frog  6
如果我要应用函数mean,我想得到一个

Color Animal AverageSize
Green Frog 1.5
Red   Frog 5.5

感谢

基本R中最直接的方法是使用
聚合

> aggregate(Size ~ ., mydf, mean)
  Color Animal Size
1 Green   Frog  1.5
2   Red   Frog  5.5
其中,“.”表示所有其他分组列,而“Size”是要聚合的列

其他选择包括:

library(data.table)
as.data.table(mydf)[, mean(Size), by = list(Color, Animal)]
或:

(在许多其他方面中)

聚合(大小~颜色+动物,数据=数据,平均值)
在处理海量数据时,“dplyr”和“data.table”的效率高得惊人
library(dplyr)  
mydf %>%
  group_by(Color, Animal) %>%
  summarise(Size = mean(Size))