Rで解析:データ操作に便利なコマンド「datawizard」パッケージ


データ操作に便利なコマンドが数多く収録されているパッケージの紹介です。データ抽出、データ結合、列名の変更、long型やwide型への変換、データの記述統計などのコマンドが収録されています。

パッケージバージョンは0.3.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("datawizard")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("datawizard")

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 100
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
                                  replace = TRUE),
                   ID = sample(LETTERS[1:5], n, replace = TRUE),
                   X_num_Data = sample(c(1:30), n, replace = TRUE),
                   Y_num_Data = sample(c(51:100), n, replace = TRUE))
########

#条件に合うデータ行番号を取得:data_matchコマンド
#条件を指定:toオプション;datafreame/tibble形式で指定
GetRows <- data_match(x = TestData,
                      to = tibble(ID = c("A", "C"), X_num_Data = 10))
#確認
GetRows
[1]  4 38 66
#データ抽出
TestData[GetRows,]
# A tibble: 3 x 4
#  Group  ID    X_num_Data Y_num_Data
#  <chr>  <chr>      <int>      <int>
#1 Group2 C             10         87
#2 Group2 A             10         85
#3 Group1 C             10         58

#列名の先頭に文字を付与:data_addprefixコマンド
head(data_addprefix(TestData, pattern = "KARADA_"), 3)
# A tibble: 3 x 4
#  KARADA_Group KARADA_ID KARADA_X_num_Data KARADA_Y_num_Data
#  <chr>        <chr>                 <int>             <int>
#1 Group4       D                         8                81
#2 Group4       A                         8                89
#3 Group2       E                        22                88

#列名の最後尾に文字を付与:data_addsuffixコマンド
head(data_addsuffix(TestData, pattern = "_KARADA"), 3)
# A tibble: 3 x 4
#  Group_KARADA ID_KARADA X_num_Data_KARADA Y_num_Data_KARADA
#  <chr>        <chr>                 <int>             <int>
#1 Group4       D                         8                81
#2 Group4       A                         8                89
#3 Group2       E                        22                88

#パターン合う列名を取得:data_findcolsコマンド
#pattern,starts_with,ends_withが使用可能
data_findcols(TestData, pattern = "\\_num")
[1] "X_num_Data" "Y_num_Data"

#列の削除:data_removeコマンド
head(data_remove(TestData, pattern = "ID"), 3)
# A tibble: 3 x 3
#  Group  X_num_Data Y_num_Data
#  <chr>       <int>      <int>
#1 Group4          8         81
#2 Group4          8         89
#3 Group2         22         88

#列名の変更:data_renameコマンド
head(data_rename(TestData, c("Group", "ID"),
                 c("KARADA", "GOOD")), 3)
# A tibble: 3 x 4
#  KARADA GOOD  X_num_Data Y_num_Data
#  <chr>  <chr>      <int>      <int>
#1 Group4 D              8         81
#2 Group4 A              8         89
#3 Group2 E             22         88

###列名の一括消去#####
head(data_rename(TestData, NULL), 3)
# A tibble: 3 x 4
#  `1`    `2`     `3`   `4`
#  <chr>  <chr> <int> <int>
#1 Group4 D         8    81
#2 Group4 A         8    89
#3 Group2 E        22    88

#列の並び替え:data_reorderコマンド
#列名を間違ってもエラーが出ない,無視される
head(data_reorder(TestData, c("ID", "X_Num_Data")), 3)
# A tibble: 3 x 4
#  ID    Group  X_num_Data Y_num_Data
#  <chr> <chr>       <int>      <int>
#1 D     Group4          8         81
#2 A     Group4          8         89
#3 E     Group2         22         88

#データフレームの結合:data_mergeコマンド
#結合方式:joinオプション;"full","left","right",
#"inner","anti","semi","bind"
TestData_2 <- data_rename(TestData, NULL)
data_merge(x = TestData, y = TestData_2, join = "bind")
###途中を抜粋#####
#     Group ID X_num_Data Y_num_Data      1 2  3  4
#99  Group2    C          5         68   <NA> <NA> NA  NA
#100 Group4    A         19         72   <NA> <NA> NA  NA
#101   <NA> <NA>         NA         NA Group4    D  8  81
#102   <NA> <NA>         NA         NA Group4    A  8  89
########

#データをlong型に変換:data_to_longコマンド
#対象範囲:colsオプション
#変換後の列名:colnames_toオプション
#返還後の値列名:values_toオプション
#返還前の行番号:rows_toオプション;NULLで非表示
head(data_to_long(TestData, cols = c(3, 4),
                  colnames_to = "Names",
                  values_to = "Values",
                  rows_to = NULL), 3)
# A tibble: 3 x 4
# Group  ID    Names      Values
# <chr>  <chr> <chr>       <int>
#1 Group4 D     X_num_Data      8
#2 Group4 D     Y_num_Data     81
#3 Group4 A     X_num_Data      8

#データをwide型に変換:data_to_wideコマンド
LongData <- data_to_long(TestData, cols = c(3, 4),
                         colnames_to = "Names",
                         values_to = "Values",
                         rows_to = NULL)
head(data_to_wide(LongData,
                  colnames_from = "Names",
                  values_from = "Values",
                  rows_from = NULL), 3)
# A tibble: 3 x 4
#  Group  ID    Values_X_num_Data Values_Y_num_Data
#  <chr>  <chr>             <int>             <int>
#1 Group4 D                     8                81
#2 Group4 A                     8                89
#3 Group2 E                    22                88

#データの記述統計:describe_distributionコマンド
describe_distribution(TestData)
#Variable   | Mean | SD | IQR | Min | Max | Skewness | Kurtosis |   n | n_Missing
#--------------------------------------------------------------------------------
#X_num_Data |   15 |  9 |  16 |   1 |  30 |     0.10 |     -1.3 | 100 |         0
#Y_num_Data |   76 | 14 |  24 |  52 | 100 |     0.16 |     -1.2 | 100 |         0

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

スポンサードリンク

スポンサードリンク