4

一部の列が基準を満たす回数 ( ==<、 など>) の新しい変数を生成したいと考えています。関数は を処理する必要がありNAます。

一部の値が欠落しているサンプル データ:

x <- seq(10, 20)
y <- seq(12, 22)
y[4] <- NA
z <- seq(14, 24)
z[c(4,5)] <- NA
data <- cbind(x, y, z)
#        x  y  z
# [1,]  10 12 14
# [2,]  11 13 15
# [3,]  12 14 16
# [4,]  13 NA NA
# [5,]  14 16 NA
# [6,]  15 17 19
# [7,]  16 18 20
# [8,]  17 19 21
# [9,]  18 20 22
# [10,] 19 21 23
# [11,] 20 22 24

< 16この例では、列「x」、「y」、「z」の各行の値の数を合計する変数「less16」が必要です。最初の数行の望ましい結果:

 x   y   z  less16
10  12  14       3
11  13  15       3
12  14  16       2
13  NA  NA       1
14  16  NA       1
etc

rowSumsumwhich、を使用してforループを試しましたが、これまでのところすべて役に立ちませんでした。アドバイスをいただければ幸いです。前もって感謝します。ifelse

4

2 に答える 2

8

rowSums引数がありますna.rm:

data$less16 <- rowSums(data < 16, na.rm = TRUE)
于 2012-04-13T03:31:39.357 に答える
6

これらの関数の多くには、実際には値na.rmを除外するためのパラメーターがありNAます。

apply(data,1,function(x) {sum(x < 16,na.rm = TRUE)})
于 2012-04-13T03:24:37.780 に答える