janitor::clean_names
という関数がとても便利。
- 列名はすべて小文字に変更
- 列名はすべてスネークケースに変更
- 列名に含まれる空白は
_
に置換 - 列名に含まれる邪魔な文字は削除(例:ウムラウト、
@
、()
など) - 列名に含まれる
%
はpercent
に変更 - 列名が同じものは
{列名}_{通し番号}
に変更
などなどの機能。前処理で活躍する。
ベクトルには janitor::make_clean_names()
pacman::p_load(janitor) # ベクトル test_names <- c('firstName', 'SecondName', 'THIRD_NAME', 'REPEAT VALUE', 'REPEAT VALUE', '', '', 'ábc@!*', '% successful (2009)') test_names test_names %>% janitor::make_clean_names()
修正前と修正後
> test_names [1] "firstName" "SecondName" "THIRD_NAME" [4] "REPEAT VALUE" "REPEAT VALUE" "" [7] "" "abc@!*" "% successful (2009)" > test_names %>% + janitor::make_clean_names() [1] "first_name" "second_name" "third_name" [4] "repeat_value" "repeat_value_2" "x" [7] "x_2" "abc" "percent_successful_2009"
ええがな・・・
データフレームには janitor::clean_names()
# データフレーム test_df <- as.data.frame(matrix(ncol = length(test_names))) colnames(test_df) <- test_names test_df test_df %>% janitor::clean_names()
修正前と修正後
> test_df firstName SecondName THIRD_NAME REPEAT VALUE REPEAT VALUE abc@!* 1 NA NA NA NA NA NA NA NA % successful (2009) 1 NA > test_df %>% + janitor::clean_names() first_name second_name third_name repeat_value repeat_value_2 x x_2 abc 1 NA NA NA NA NA NA NA NA percent_successful_2009 1 NA
ごっつええやん・・・