data.table
使用和plyr
包的替代解决方案:
1)使用data.table
require(data.table)
dt <- data.table(dat, key="group")
# Following @Matthew's comment, edited:
dt[, `:=`(m_x = mean(x), m_y = mean(y)), by=group]
输出:
group x y m_x m_y
1: 1 1 2 3 4
2: 1 3 4 3 4
3: 1 5 6 3 4
4: 2 7 8 9 10
5: 2 9 10 9 10
6: 2 11 12 9 10
2)使用plyr
和改造:
require(plyr)
ddply(dat, .(group), transform, m_x=mean(x), m_y=mean(y))
输出:
group x y m_x m_y
1 1 1 2 3 4
2 1 3 4 3 4
3 1 5 6 3 4
4 2 7 8 9 10
5 2 9 10 9 10
6 2 11 12 9 10
3)使用plyr
和numcolwise(注意减少的输出):
ddply(dat, .(group), numcolwise(mean))
输出:
group x y
1 1 3 4
2 2 9 10