【发布时间】:2016-07-20 21:05:58
【问题描述】:
我有一个如下所示的数据框。
dat <- data.frame(k=c("A","A","B","B","B"),a=c(2,3,1,3,4),b=c(5,8,2,1,2))
> dat
k a b
1 A 2 5
2 A 3 8
3 B 1 2
4 B 3 1
5 B 4 2
我想在 k 上聚合 a 和 b,同时保持原始数据结构。以下两种方法总结了结果。
aggregate(.~k,data=dat,mean)
k a b
1 A 2.500000 6.500000
2 B 2.666667 1.666667
plyr::ddply(dat,.(k),colwise(mean))
k a b
1 A 2.500000 6.500000
2 B 2.666667 1.666667
但我正在寻找这样的结果:
k a b
1 A 2.50 6.50
2 A 2.50 6.50
3 B 2.66 1.66
4 B 2.66 1.66
5 B 2.66 1.66
有什么简单的解决方案吗?谢谢。
【问题讨论】:
标签: r