鉴于以下数据集,我需要一种通过TERRITORY计算每个样本的均值并填充相应列的方法。对最佳方法的任何建议。
TERRITORY SAMPLE_A SAMPLE_B SAMPLE_C MEAN_A MEAN_B MEAN_C
A 21 34 23
A 23 23 54
B 34 67 23
B 35 76 65
C 45 34 65
C 87 34 45
答案 0 :(得分:1)
有很多方法可以做到这一点。这是一种使用plyr
的方法。注意:我假设样本c中的RE
应该是缺失值?那就是NA
?
无论如何,试试
library(plyr)
new.dat <- ddply(dat, .(territory), transform,
mean_a = mean(sample_a), mean_b= mean(sample_b), mean_c=mean(sample_c))
其中dat
是您的数据等。您可能需要调整列名称并为NA
设置mean
选项。例如,编写mean(sample_x, na.rm=T)
将计算所有非缺失值的均值。否则,将返回NA
。
答案 1 :(得分:1)
有很多方法可以做到这一点,但如果你想坚持基础R,请使用aggregate
。如果您的数据框为d
,那么平均值可以计算为
means <- aggregate(. ~ TERRITORY, data = d, mean)
然后重命名包含均值的列并与原始数据框合并
names(means) <- gsub("^SAMPLE_", "MEAN_", names(means))
merge(d, means)