在r中按团队聚合数据框架

时间:2015-08-30 02:49:22

标签: r dataframe mean

我有一个数据框" dat"这类似于以下内容:

team   a   b   c
1      5   6   2
1      2   8   1
1      5   10  30
2      1   3   55
2      4   4   4
2      6   11  66
3      10  1   .5
3      3   4   24
3      4   44  60

我试图将其转换为数据框,以便为每个团队计算每个变量(a,b和c)的平均值。所以最终结果如下:

team    a    b    c
1       4    8    11
2       3.7  6    41.7
3       5.7  16.3 28.2

他们不必都是1位小数,但重点是相同的。谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以dplyr/data.tablebase R aggregate执行此操作。

使用dplyr,我们按“团队”进行分组,然后使用summarise_each分组,我们得到mean

library(dplyr)
dat %>%
   group_by(team) %>%
   summarise_each(funs(mean))

或者在data.table中,我们将'data.frame'转换为'data.table'(setDT(dat)),按'团队'分组,我们循环使用lapply以获取其他专栏的“均值”。

library(data.table)
setDT(dat)[, lapply(.SD, mean), team]

或者,我们可以使用aggregatebase R的公式方法获取mean。我们必须在公式的LHS中指定.来表示所有其他列。

aggregate(.~team, dat, mean)