CSVファイルのデータフレームがあります。データフレームDF
には、観測値を含む列と、測定が行われた日付を含む列(VaR2
)があります。日付が記録されなかった場合、CSVファイルには欠落データの値NA
が含まれます。
Var1 Var2
10 2010/01/01
20 NA
30 2010/03/01
サブセットコマンドを使用して、列(new_DF
)のNA'
値を持つ行のみが含まれるように、新しいデータフレームVaR2
を定義します。指定された例では、行2のみが新しいDF
に含まれます。
コマンド
new_DF<-subset(DF,DF$Var2=="NA")
機能しません。結果のデータフレームには行エントリがありません。
元のCSVファイルで、値NA
がNULL
と交換される場合、同じコマンドで目的の結果new_DF<-subset(DF,DF$Var2=="NULL")
が生成されます。
文字列の値NA
が元のCSVファイルで提供されている場合、このメソッドを機能させるにはどうすればよいですか?
欠損値をテストするために== 'NA'を使用しないでください。代わりにis.na()
を使用してください。これはそれを行う必要があります:
new_DF <- DF[rowSums(is.na(DF)) > 0,]
または、特定の列を確認する場合は、使用することもできます
new_DF <- DF[is.na(DF$Var),]
NA文字値がある場合は、最初に実行します
Df[Df=='NA'] <- NA
欠損値でそれらを置き換えるために。
NAはRの特別な値です。NA値と「NA」文字列を混同しないでください。データのインポート方法に応じて、「NA」および「NULL」セルはさまざまなタイプになります(デフォルトの動作では、「NA」文字列をNA値に変換し、「NULL」文字列をそのままにします)。
Read.table()またはread.csv()を使用する場合は、「na.strings」引数を考慮してクリーンなデータインポートを実行し、常に実際のR NA値を使用する必要があります。
例、「NULL」および「NA」セルの両方で動作する場合:
DF <- read.csv("file.csv", na.strings=c("NA", "NULL"))
new_DF <- subset(DF, is.na(DF$Var2))
complete.cases
は、行のすべての値がTRUE
でない場合にNA
を返します
DF[!complete.cases(DF), ]
new_data <- data %>% filter_all(any_vars(is.na(.)))
これにより、欠損値のみを含む新しいデータフレーム(new_data
)が作成されます。
観測値が欠落している列(NA)があるため、後でドロップする可能性のある値を追跡するのに最適です。
これを変更してみてください:
new_DF<-dplyr::filter(DF,is.na(Var2))