-2

たとえば、2つのグループのデータがあります

> 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のグループ2の平均)

4

1 に答える 1

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
于 2012-10-23T22:59:00.883 に答える