データフレームの2列の整数値を取得して、データフレームをサブセットしようとしています。
Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])
しかし、それは私にエラーを与えます:より長いオブジェクトの長さはより短いオブジェクトの長さの倍数ではありません。
列2および列3のNON NA値で構成されるサブセットを構築するにはどうすればよいですか?
どうもありがとう?
これを試して:
_Subs1<-subset(DATA, (!is.na(DATA[,2])) & (!is.na(DATA[,3])))
_
subset
の2番目のパラメーターは、nrow(DATA)
と同じ長さの論理ベクトルで、対応する行を保持するかどうかを示します。
Na.omit関数は、あなたの質問に対する答えになります
Subs1 <- na.omit(DATA[2:3])
[ https://stat.ethz.ch/R-manual/R-patched/library/stats/html/na.fail.html]
ここに例を示します。 a、b、cは3つのベクトルで、aとbには欠損値があります。それらが作成されたら、cbindを使用してそれらを1つのマトリックスにバインドし、後でデータフレームに変換できます。
最終結果は、3列のうち2列に欠損値があるデータフレームです。したがって、完全なケースを持つ行のみを保持する必要があります。すべての列に値が欠落していない行のみを保持するために、DATA[complete.cases(DATA), ]
が使用されます。 subset
オブジェクトは、完全なケースを持つこれらの行です。
a <- c(1,NA,2)
b <- c(NA,1,2)
c <- c(1,2,3)
DATA <- as.data.frame(cbind(a,b,c))
subset <- DATA[complete.cases(DATA), ]