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

时间:2015-05-15 15:49:25

标签: r dataframe aggregate apply

假设我有一个带有的数据框,

Color Animal Size
Green Frog  2
Red   Frog  5
Green Frog  1
Red   Frog  6

如果我要应用函数mean,我想获得一个具有

的data.frame
Color Animal AverageSize
Green Frog 1.5
Red   Frog 5.5

由于

1 个答案:

答案 0 :(得分:3)

基地R中最直接的方式是使用aggregate

> aggregate(Size ~ ., mydf, mean)
  Color Animal Size
1 Green   Frog  1.5
2   Red   Frog  5.5

那里,"。"代表所有其他分组列,而"尺寸"是要聚合的列。

其他选项包括:

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

或者:

library(dplyr)  
mydf %>%
  group_by(Color, Animal) %>%
  summarise(Size = mean(Size))

许多其他人。)