确定具有不同因子的向量的平均值

时间:2014-10-29 14:55:51

标签: r

说我有一个"整数"因子向量长度为​​5:

vecFactor = c(1,3,2,2,3)

和另一个"整数"数据向量长度为​​5:

vecData = c(1.3,4.5,6.7,3,2)

如何在每个因子中找到数据的平均值,以便得到以下结果:

Factor 1: Average = 1.3
Factor 2: Average = 4.85
Factor 3: Average = 3.25

3 个答案:

答案 0 :(得分:1)

 tapply(vecData, vecFactor, FUN=mean)
   1    2    3 
 1.30 4.85 3.25 

答案 1 :(得分:1)

我有时使用线性模型来代替tapply,这非常灵活(例如,如果你需要添加权重......)。不要忘记公式中的“-1”

lm(vecData~factor(vecFactor)-1)$coef

factor(vecFactor)1 factor(vecFactor)2 factor(vecFactor)3
        1.30               4.85               3.25

答案 2 :(得分:1)

要获得一个好的表,请尝试使用data.frame:

的聚合函数
ddf = data.frame(vecData, vecFactor)
aggregate(vecData~vecFactor, data=ddf, mean)
  vecFactor vecData
1         1    1.30
2         2    4.85
3         3    3.25

data.table也可用于此:

library(data.table)    
ddt = data.table(ddf)
ddt[,list(meanval=mean(vecData)),by=vecFactor]
   vecFactor meanval
1:         1    1.30
2:         3    3.25
3:         2    4.85