在 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.table
或 base 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)
我有一个数据框 "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.table
或 base 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)