如何获得每列的平均值,按一组分组?

时间:2014-02-24 00:46:28

标签: r

我正在使用R.我有一个数据集。

group attribute1 attribute2 attribute3
A     1          2          3
A     2          3          4
B     2          4          2
B     2          2          1

如何编写输出函数:

group attribute1 attribute2 attribute3
A      1.5        2.5         3.5    
B      2          3           1.5

让我很困惑。我不知道如何使用ddply函数来做到这一点?谁能给我一些提示?

2 个答案:

答案 0 :(得分:4)

> mydf <- data.frame(group=c('a','a','b','b'), a1=c(1,1,2,2), a2=c(2,3,4,2), a3=c(3,4,2,1))
> aggregate(. ~ group, mydf, mean)
    group a1  a2  a3
1       a  1 2.5 3.5
2       b  2 3.0 1.5

或使用plyr

ddply(mydf, "group", colwise(mean))

答案 1 :(得分:2)

使用data.table

library(data.table)
mydf <- data.frame(group=c('a','a','b','b'), a1=c(1,1,2,2), a2=c(2,3,4,2), a3=c(3,4,2,1))
my.dt <- data.table(mydf)
my.dt[, lapply(.SD, mean), by = group]

   group a1  a2  a3
1:     a  1 2.5 3.5
2:     b  2 3.0 1.5