我是R的新人,有一个应该是一个简单的问题来回答;任何帮助将不胜感激。
情况是我有一个制表符分隔的数据矩阵(data matrix.txt),如下所示,最后一栏包含了组信息。
sampleA sampleB sampleC Group
obs11 23.2 52.5 -86.3 1
obs12 -86.3 32.5 -84.7 1
obs41 -76.2 35.8 -16.3 2
obs74 23.2 32.5 -86.8 2
obs82 -86.2 52.8 -83.2 3
obs38 -36.2 59.5 -74.3 3
我想用每个组的平均值替换每个组的值
如何在R中计算组的平均值而不是行或列的平均值?
如何使用此值替换原始值?在这种情况下,replace()函数是否可用,或者仅用于替换两个已知值?
提前致谢
答案 0 :(得分:0)
ddply包应该可以解决问题。
dat <- as.data.frame(matrix(runif(80),ncol=4))
dat$group <- sample(letters[1:4],size=20,replace=T)
head(dat)
library(plyr)
ddply(.data = dat, .variables =.(group), colwise(mean))
结果
group V1 V2 V3 V4
1 a 0.4741673 0.7669612 0.5043857 0.5039938
2 b 0.3648794 0.5776748 0.4033758 0.5748613
3 c 0.1450466 0.5399372 0.2440170 0.5124578
4 d 0.4249183 0.3252093 0.5467726 0.4416924