R按标准计算

时间:2014-07-03 13:27:11

标签: r

鉴于以下数据集,我需要一种通过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

2 个答案:

答案 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)