在 r 中按团队聚合数据帧

aggregate data-frame by team in r

我有一个数据框 "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

它们不一定都保留到小数点后一位,但要点是一样的。谢谢!

我们可以 dplyr/data.tablebase R aggregate 来做到这一点。

使用 dplyr,我们按 'team' 分组,然后使用 summarise_each,我们得到 mean

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

或者在 data.table 中,我们将 'data.frame' 转换为 'data.table' (setDT(dat)),按 'team' 分组,我们用 [=21= 循环]得到其他列的'mean'。

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

或者我们可以用aggregate的公式方法从base R得到mean。我们必须在公式的 LHS 处指定 . 以表示所有其他列。

aggregate(.~team, dat, mean)