说我有一个"整数"因子向量长度为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
答案 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