データを読み込んだ時に全角、半角のスペースや日付表記など表記の揺れ幅を修正することがあります。そんな修正作業が少し楽になるかもしれないパッケージの紹介です。対象文字をNAに置換、半角スペースを除去、日付データをXXXX-XX-XXのymd形式に変換などのコマンドが収録されています。
パッケージのバージョンは0.2.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("framecleaner")
実行コマンド
詳細はコメント、パッケージヘルプを確認してください。
#パッケージの読み込み library("framecleaner") ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 30 TestData <- tibble(Group = sample(paste0("Group", 1:4), n, replace = TRUE), Data_1 = sample(c(1:3, " "), n, replace = TRUE), a_Data_2 = sample(c(1:3, NA, " "), n, replace = TRUE), #「か」は半角スペースを先頭に付与 c_Data_3 = sample(c(" か", "NA", " ", "えぬえ"), n, replace = TRUE), Date = sample(c(20220210, "22.02.10", " "), n, replace = TRUE)) #確認 TestData # A tibble: 30 x 5 Group Data_1 a_Data_2 c_Data_3 Date <chr> <chr> <chr> <chr> <chr> 1 Group4 "3" "3" " か" " " 2 Group4 " " "1" "えぬえ" "22.02.10" 3 Group2 "3" " " " " "20220210" 4 Group2 "3" "1" "えぬえ" "22.02.10" 5 Group1 "1" "1" " " "22.02.10" 6 Group4 "2" "2" " か" "22.02.10" 7 Group3 "1" "1" "NA" "20220210" 8 Group1 "2" "3" "NA" " " 9 Group1 "2" "2" " " " " 10 Group2 "3" "3" "えぬえ" "20220210" # ... with 20 more rows ######## #対象文字をNAに置換:make_naコマンド #対象を設定:vecオプション #初期値:c("-", "", " ", "null", "NA", "NA_") TestData %>% make_na(vec = c("-", "", " ", "null", "NA", "NA_", "えぬえ")) # A tibble: 30 x 5 Group Data_1 a_Data_2 c_Data_3 Date <chr> <chr> <chr> <chr> <chr> 1 Group4 3 3 " か" NA 2 Group4 NA 1 NA 22.02.10 3 Group2 3 NA NA 20220210 4 Group2 3 1 NA 22.02.10 5 Group1 1 1 NA 22.02.10 6 Group4 2 2 " か" 22.02.10 7 Group3 1 1 NA 20220210 8 Group1 2 3 NA NA 9 Group1 2 2 NA NA 10 Group2 3 3 NA 20220210 # ... with 20 more rows #半角スペースを除去:remove_whitespaceコマンド TestData %>% remove_whitespace() # A tibble: 30 x 5 Group Data_1 a_Data_2 c_Data_3 Date <chr> <chr> <chr> <chr> <chr> 1 Group4 "3" "3" "か" "" 2 Group4 "" "1" "えぬえ" "22.02.10" 3 Group2 "3" "" "" "20220210" 4 Group2 "3" "1" "えぬえ" "22.02.10" 5 Group1 "1" "1" "" "22.02.10" 6 Group4 "2" "2" "か" "22.02.10" 7 Group3 "1" "1" "NA" "20220210" 8 Group1 "2" "3" "NA" "" 9 Group1 "2" "2" "" "" 10 Group2 "3" "3" "えぬえ" "20220210" # ... with 20 more rows #日付データをXXXX-XX-XXのymd形式に変換:コマンド #データ例ではDateにNAが9あるのでエラーで表示される TestData %>% set_date(Date) # A tibble: 30 x 5 Group Data_1 a_Data_2 c_Data_3 Date <chr> <chr> <chr> <chr> <date> 1 Group4 "3" "3" " か" NA 2 Group4 " " "1" "えぬえ" 2022-02-10 3 Group2 "3" " " " " 2022-02-10 4 Group2 "3" "1" "えぬえ" 2022-02-10 5 Group1 "1" "1" " " 2022-02-10 6 Group4 "2" "2" " か" 2022-02-10 7 Group3 "1" "1" "NA" 2022-02-10 8 Group1 "2" "3" "NA" NA 9 Group1 "2" "2" " " NA 10 Group2 "3" "3" "えぬえ" 2022-02-10 # ... with 20 more rows Warning message: Problem with `mutate()` input `..1`. i `..1 = dplyr::across(tidyselect::any_of(nms), .fns = ~date_fn(.))`. i 9 failed to parse. #アルファベット順で列名を並び替え:relocate_allコマンド TestData %>% relocate_all() # A tibble: 30 x 5 a_Data_2 c_Data_3 Data_1 Date Group <chr> <chr> <chr> <chr> <chr> 1 "3" " か" "3" " " Group4 2 "1" "えぬえ" " " "22.02.10" Group4 3 " " " " "3" "20220210" Group2 4 "1" "えぬえ" "3" "22.02.10" Group2 5 "1" " " "1" "22.02.10" Group1 6 "2" " か" "2" "22.02.10" Group4 7 "1" "NA" "1" "20220210" Group3 8 "3" "NA" "2" " " Group1 9 "2" " " "2" " " Group1 10 "3" "えぬえ" "3" "20220210" Group2 # ... with 20 more rows
少しでも、あなたの解析が楽になりますように!!