本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:データマイニングの初手に有効かも「framecleaner」パッケージ

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

少しでも、あなたの解析が楽になりますように!!

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.