SQLから借用するために、NULLでない値に基づいてデータフレームのサブセットを取得しようとしています。何かを試してみてください:サブセット()内の定義された値の確認
lately <- subset(data, year > 1997 & myvalue != NA)
しかし、それは正しくありません。任意のヒント、r'sters?
SQLから借用するために、NULLでない値に基づいてデータフレームのサブセットを取得しようとしています。何かを試してみてください:サブセット()内の定義された値の確認
lately <- subset(data, year > 1997 & myvalue != NA)
しかし、それは正しくありません。任意のヒント、r'sters?
subset(data, year > 1997 & !is.na(myvalue))
する必要があります。お使いのバージョンが動作しない理由は、NA
のデータムがわからないため、foo != NA
またはfoo == NA
は常にNA
です。 is.na()
を使用してNA
をテストし、 "NOT NA"を使用する場合は!
を使用して無効にします。
例えば:
> dat <- data.frame(year = 1995:2000, myvalue = c(1,3,4,NA,6,10))
> dat
year myvalue
1 1995 1
2 1996 3
3 1997 4
4 1998 NA
5 1999 6
6 2000 10
> subset(dat, year > 1997 & myvalue != NA)
[1] year myvalue
<0 rows> (or 0-length row.names)
> subset(dat, year > 1997 & !is.na(myvalue))
year myvalue
5 1999 6
6 2000 10
あなたのバージョンが動作しない理由について、さらに熟考することは有益です。
句リターンの最初の部分:彼らはFALSEですが、我々は最終のための二句をチェックする必要があるとして、我々は任意のさらなるチェックを行う必要はありません。最初の3つの要素については
> with(dat, year > 1997)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
この例では3つの要素があります。上述したように、第2の句は、すべての要素のNA
を返す:
> with(dat, myvalue != NA)
[1] NA NA NA NA NA NA
従って組み合わさ句戻り値:任意の行を選択しないことになります
> with(dat, year > 1997 & myvalue != NA)
[1] FALSE FALSE FALSE NA NA NA
を、ひいてはゼロ列オブジェクトが返さあなたの例のために。
考えていただきありがとうございます。 – Wells
データ? 「正しくない」の定義ですか?私たちは読者ではありません。 –