統一性

Rでのデータクリーニング

Maggie Matsui

Content Developer @ DataCamp

統一性

  • 単位や形式の違い
    • 気温: °C°F
    • 重さ: kgglb
    • 通貨: USD $、GBP £、JPY ¥
    • 日付: DD-MM-YYYYMM-DD-YYYYYYYY-MM-DD
Rでのデータクリーニング

統一性の問題はどこから来るか

左: 複数のデータベースから1つのデータテーブルへ矢印(複数のデータソース)。右: フリーテキスト入力欄とカーソル、キーボード付きPC(データ入力ミス)。

Rでのデータクリーニング

統一性の問題を見つける

head(nyc_temps)
         date temp
1  2019-04-01  4.2
2  2019-04-02  7.5
3  2019-04-03 12.2
4  2019-04-04 11.1
5  2019-04-05 41.5
6  2019-04-06 11.9
Rでのデータクリーニング

統一性の問題を見つける

library(ggplot2)
ggplot(nyc_temps, aes(x = date, y = temp)) +
  geom_point()

コードで生成したプロット。明らかに他より高い気温が3点ある。

Rでのデータクリーニング

どう対処するか

  • 最適解は一つではありません。データに依存します。
  • データの出所を調べましょう

コードで生成したプロット。明らかに他より高い気温が3点ある。

  • 4/7、4/16、4/23 のデータは外部ソースで °F 測定
Rでのデータクリーニング

単位の変換

$$\text{C} = (\text{F} - 32) \times \frac{5}{9}$$

ifelse(condition, value_if_true, value_if_false)

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp))
         date temp   temp_c
1  2019-04-01  4.2  4.20000
...
7  2019-04-07 58.5 14.72222
...
Rでのデータクリーニング

単位の変換

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp)) %>%
  ggplot(aes(x = date, y = temp_c)) +
    geom_point()

コードで生成したプロット。今回は外れ値が見当たりません。単位を変換したためです。

Rでのデータクリーニング

日付の統一

nyc_temps
             date temp_c
1      2019-11-23   5.12
2        01/15/19  -0.67
3  April 24, 2019  17.46
4        08/30/19  26.46
5 October 3, 2019  14.63
6      2019-03-17   3.47

 

日付文字列 Date フォーマット
"2019-11-23" "%Y-%m-%d"
"01/15/19" "%m/%d/%y"
"April 24, 2019" "%B %d, %Y"

 

R コンソールで ?strptime を参照

Rでのデータクリーニング

複数形式のパース

library(lubridate)
parse_date_time(nyc_temps$date,
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
"2019-11-23 UTC" "2019-01-15 UTC" "2019-04-24 UTC" "2019-08-30 UTC"
"2019-10-03 UTC" "2019-03-17 UTC"
parse_date_time("Monday, January 3",
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
NA
Rでのデータクリーニング

あいまいな日付

02/04/2019 は 2 月か 4 月か?

  • データ次第です。

 

検討例:

  • 欠損として扱う
  • 複数ソース由来なら、ソース別に推定する
  • データ内の他情報から推定する
Rでのデータクリーニング

Let's practice!

Rでのデータクリーニング

Preparing Video For Download...