1

エントリが 0 から 5 までのデータ フレームがあり、0 はエントリがないことを意味します。欠落しているエントリを各行の平均で置き換えたい。平均は、欠損値以外でのみ計算する必要があります。それ、どうやったら出来るの?

たとえば、次の行です。

[1] 1 2 4 0 3

となります:

[1] 1.0 2.0 4.0 2.5 3.0
4

3 に答える 3

5
set.seed(42)
m <- matrix(sample(0:5,15,TRUE),ncol=5)

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    5    4    4    4    5
# [2,]    5    3    0    2    1
# [3,]    1    3    3    4    2

t(apply(m,1,function(x) {x[x==0] <- mean(x[x!=0]); x}))

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    5    4 4.00    4    5
# [2,]    5    3 2.75    2    1
# [3,]    1    3 3.00    4    2
于 2013-05-23T09:35:37.647 に答える
0

これは、上記の例のトリックを行う必要があります。

vec[vec == 0] = mean(vec[vec != 0])

これを関数でラップしapply、すべての行に対して使用できます。

于 2013-05-23T09:34:58.513 に答える