「OR」を使用して複数の条件を組み合わせてデータフレームをサブセット化するにはどうすればよいでしょうか? 質問する

「OR」を使用して複数の条件を組み合わせてデータフレームをサブセット化するにはどうすればよいでしょうか? 質問する

R にデータフレームがあります。2 つの異なる列に対して 2 つの異なる条件を試したいのですが、これらの条件は包括的である必要があります。したがって、条件を組み合わせるために「OR」を使用します。以前、「AND」条件を使用したいときに、次の構文を使用して多くの成功を収めました。

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

しかし、上記で「OR」をどのように使用すればよいかわかりません。

ベストアンサー1

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

「&」を使用する場合、引数の順序が重要になる場合があります。

おすすめ記事