データを読み込んだ時に全角、半角のスペースや日付表記など表記の揺れ幅を修正することがあります。そんな修正作業が少し楽になるかもしれないパッケージの紹介です。対象文字を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
少しでも、あなたの解析が楽になりますように!!