4

NAを含む6列のデータフレームがあります。最大 3 つの NA を含む行のみを選択したいと考えています。使用している NA の数を見つけることがsum(is.na(my.df[,c(1:6)])),できましたが、「サブセット」またはその他の関数と条件を使用してデータ フレームのサブセットを選択できませんでした。sum(is.na(log.df[,c(1:6)])) <=3 最終的に、選択した各行の中央値を計算したいと考えています。サンプル データが表示されます。下:

C1  C2  C3  C4  C5  C6
6.4 NA 6.1 6.2 NA NA
7.1 6.4 6.5 5.9 7 6.9
7.1 7 6.9 6.9 6.9 7
6.9 NA 6.9 NA 7.1 NA
6.8 NA 7.1 7.1 6.8 7.2
NA NA NA NA NA 6.4
NA NA NA NA NA 6.7

前もって感謝します

4

1 に答える 1

7

使用rowSums:

> mydf[rowSums(is.na(mydf)) <= 3, ]
   C1  C2  C3  C4  C5  C6
1 6.4  NA 6.1 6.2  NA  NA
2 7.1 6.4 6.5 5.9 7.0 6.9
3 7.1 7.0 6.9 6.9 6.9 7.0
4 6.9  NA 6.9  NA 7.1  NA
5 6.8  NA 7.1 7.1 6.8 7.2

ステップバイステップ:

  • NA1 行あたりの s はいくつですか?

    > rowSums(is.na(mydf))
    [1] 3 0 0 3 1 5 5
    
  • それらのうち、3 以下のものはいくつありますか?

    > rowSums(is.na(mydf)) <= 3
    [1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
    

そして、Rはそれを使用してサブセット化できます。行 (1、2、3、4、5)を保持し、行 ( 6、7 TRUE) を破棄します。FALSE

于 2013-09-03T17:32:33.477 に答える