上の記事をこの前Qiitaに投稿した。この後、もう少し書いて置くべきことを見つけたので、こっちの記事にまとめておく。
準備編
library(naniar) data("pedestrian")
> str(pedestrian) Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 37700 obs. of 9 variables: $ hourly_counts: int 883 597 294 183 118 68 47 52 120 333 ... $ date_time : POSIXct, format: "2016-01-01 00:00:00" "2016-01-01 01:00:00" "2016-01-01 02:00:00" "2016-01-01 03:00:00" ... $ year : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ... $ month : Ord.factor w/ 12 levels "January"<"February"<..: 1 1 1 1 1 1 1 1 1 1 ... $ month_day : int 1 1 1 1 1 1 1 1 1 1 ... $ week_day : Ord.factor w/ 7 levels "Sunday"<"Monday"<..: 6 6 6 6 6 6 6 6 6 6 ... $ hour : int 0 1 2 3 4 5 6 7 8 9 ... $ sensor_id : int 2 2 2 2 2 2 2 2 2 2 ... $ sensor_name : chr "Bourke Street Mall (South)" "Bourke Street Mall (South)" "Bourke Street Mall (South)" "Bourke Street Mall (South)" ...
Qiitaの記事では、アメリカの生活習慣病データが記録されているriskfactors
データセットを用いたが、特に意味はないが、今回はpedestrian
データを用いる。このデータは2016年に計測されたメルボルン市内での歩行者数がカウントされたデータが記録されている。気になる人は下記を参照。
欠損値確認編
miss_var_run(): 欠損値が出現する頻度の確認
> miss_var_run(data = pedestrian, var = hourly_counts) # A tibble: 35 x 2 run_length is_na <int> <chr> 1 6628 complete 2 1 missing 3 5250 complete 4 624 missing 5 3652 complete 6 1 missing 7 1290 complete 8 744 missing 9 7420 complete 10 1 missing # … with 25 more rows
どのようなパターンで欠損値がデータ上に出現しているかがすぐにわかる。時系列データなどではランダムに欠損値が出ているのか、規則性があるのかを確認でき、使いようによってはかなり便利っぽそう。
miss_var_span(): 指定したデータスパン内での欠損値確認
> miss_var_span(pedestrian, var = hourly_counts, span_every = 4000) # A tibble: 10 x 5 span_counter n_miss n_complete prop_miss prop_complete <int> <int> <dbl> <dbl> <dbl> 1 1 0 4000 0 1 2 2 1 3999 0.00025 1.000 3 3 121 3879 0.0302 0.970 4 4 503 3497 0.126 0.874 5 5 745 3255 0.186 0.814 6 6 0 4000 0 1 7 7 1 3999 0.00025 1.000 8 8 0 4000 0 1 9 9 745 3255 0.186 0.814 10 10 432 3568 0.108 0.892
スパンを指定して、スパン毎の欠損値の要約を出力してくれる関数。引数var
で欠損値の要約を得たい変数を指定し、span_every
で列数(欠損値の要約を得るスパン)を指定。アウトプットは欠損値と非欠損値の実数と割合を表示してくれるので確認が容易にできる。
可視化編
gg_miss_span(): 指定したスパン内での欠損値の割合を可視化
gg_miss_span(pedestrian, var = hourly_counts, span_every = 4000)
スパンごとに欠損値の割合を棒グラフで一目で教えてくれる優れもの。
まとめ
さわりの部分はこちらのQiita記事に書いたので気になる人は参照してください。naniarパッケージはかなり便利ですが、日本語でまとめられている記事をみなかったので書きました。よりパッケージに詳しい人とがいれば足りていない部分を教えて欲しいです。