我有两组数据,例如
> data.frame(group=rep(1:2,each=4),value=c(102,104,107,45,204,199,217,77))
group value
1 1 102
2 1 104
3 1 107
4 1 45
5 2 204
6 2 199
7 2 217
8 2 77
并且我想获得没有异常值的两组的平均值(值为> 50的组1的平均值和值> 100的组的平均值)
答案 0 :(得分:2)
获取数据:
test <- data.frame(group=rep(1:2,each=4),value=c(102,104,107,45,204,199,217,77))
使用by
和switch
:
by(test,test$group,
function(x) {
switch(
x$group[1],
#group 1
mean(x$value[x$value > 50]),
#group 2
mean(x$value[x$value > 100])
)
}
)
结果:
test$group: 1
[1] 104.3333
------------------------------------------------------------
test$group: 2
[1] 206.6667