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
「&」を使用する場合、引数の順序が重要になる場合があります。