1. ホーム
  2. r

[解決済み] 複数の条件を組み合わせて、"OR "を使用してデータフレームをサブセットする方法は?

2022-04-13 12:01:55

質問

Rでdata.frameを持っています。2つの異なる列で2つの異なる条件を試したいのですが、これらの条件は包括的であって欲しいのです。そこで、条件を組み合わせるために"OR"を使用したいと思います。 以前、"AND"の条件を使いたいときに、以下の構文を使い、多くの成功を収めました。

my.data.frame <- data[(data$V1 > 2) & (data$V2 < 4), ]

しかし、上記の中で「OR」をどう使えばいいのかわかりません。

どのように解決するのですか?

my.data.frame <- subset(data , V1 > 2 | V2 < 4)

この関数の動作を模倣した代替案で、関数本体の中に含めるのがより適切でしょう。

new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]

を使うことを批判する人もいます。 which は不要ですが、その分 NA の値は不要な結果を投げ返さないようにします。上記の2つのオプションと同等(つまり、V1またはV2のNAに対してNA行を返さない)で which となります。

 new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4)  , ]

注:すぐ上のコードの誤りを修正しようとした匿名の投稿者に感謝したい。この修正はモデレーターによって拒否された。実は、最初の誤りを修正するときに、もう一つ誤りがあることに気づきました。NA値をチェックする条件節は、私が意図したとおりに処理されるのであれば、最初に記述する必要があります、なぜなら ...

> NA & 1
[1] NA
> 0 & NA
[1] FALSE

'&"' を使用する場合、引数の順序が問題になることがあります。