计算平均我有这样一个数据帧:转换一个数据帧,并通过
ID A V
1 M 4
1 D 6
1 M 10
2 D 3
2 D 7
,我想变换成这样:
ID M D V
1 7 6 10
2 5 5
基本上,我要计算的平均分组。我已经使用“聚合”和“plyr”包但没有成功。
预先感谢您。
计算平均我有这样一个数据帧:转换一个数据帧,并通过
ID A V
1 M 4
1 D 6
1 M 10
2 D 3
2 D 7
,我想变换成这样:
ID M D V
1 7 6 10
2 5 5
基本上,我要计算的平均分组。我已经使用“聚合”和“plyr”包但没有成功。
预先感谢您。
如果我理解正确的,要实际执行的操作需要几个步骤:
1:集团双方ID
和A
和计算V
的手段。
2:取步骤1的结果和从长重塑它宽格式,使得从原始列A
每个组具有在所得data.frame自己的列。
3:另外,组由ID
和计算手段V
。
4:合并ID
将步骤2和3的结果合并到单个数据帧中。
这可以用几个电话到aggregate()
,第一聚集结果reshape()
一个电话,最后一个电话来完成,以merge()
:
df <- data.frame(ID=c(1L,1L,1L,2L,2L),A=c('M','D','M','D','D'),V=c(4L,6L,10L,3L,7L),stringsAsFactors=F);
merge(reshape(aggregate(V~ID+A,df,mean),dir='w',idvar='ID',timevar='A'),aggregate(V~ID,df,mean));
## ID V.D V.M V
## 1 1 6 7 6.666667
## 2 2 5 NA 5.000000
(我想你打字的时候犯了一个错误您的预期产出;组ID=1
的V
的平均值是6.666667,而不是10.)
谢谢你,你读了我的想法:) – klo
您真的应该详细阐述一下您的预期产出。 –
结果中的“V”列是什么? –
是ID的均值。但值应该是6.666667,而不是10. – klo