我有一个数据框" 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位小数,但重点是相同的。谢谢!
答案 0 :(得分:2)
我们可以dplyr/data.table
或base 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]
或者,我们可以使用aggregate
中base R
的公式方法获取mean
。我们必须在公式的LHS中指定.
来表示所有其他列。
aggregate(.~team, dat, mean)