「dplyr」パッケージのコマンドを省略して実行できるパッケージの紹介です。少しでもコードを省略したい方におすすめです。pivot_longerコマンド、pivot_widerコマンド、mutateコマンド、transmuteコマンド、データのネストなどを省略したコマンドが収録されています。
パッケージバージョンは1.6.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール
install.packages("tidyfst")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("tidyfst")
###データ例の作成#####
#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),
X_num_Data = sample(c(1:50, NA), n, replace = TRUE),
Y_num_Data = sample(c(51:100), n, replace = TRUE),
Chr_Data = sample(c("か", "ら", "だ", "に",
"い", "い", "も", "の"),
n, replace = TRUE),
Fct_Data = factor(sample(c("か", "ら", "だ", "に",
"い", "い", "も", "の"),
n, replace = TRUE)))
########
#pivot_longerコマンドの省略:longer_dtコマンド
longer_dt(TestData, "Group", "Chr_Data", "Fct_Data",
name = "Name", value = "Data") -> LongData
LongData
# Group Chr_Data Fct_Data Name Data
# <char> <char> <fctr> <fctr> <int>
#1: Group4 に の X_num_Data 3
#2: Group4 の だ X_num_Data 36
#3: Group2 の に X_num_Data 31
#4: Group2 に に X_num_Data 29
#5: Group1 か だ X_num_Data 5
#以下省略
#pivot_widerコマンドの省略:wider_dtコマンド
wider_dt(LongData, name = "Name", value = "Data")
#Key: <Group, Chr_Data, Fct_Data>
# Group Chr_Data Fct_Data X_num_Data Y_num_Data
#<char> <char> <fctr> <int> <int>
#1: Group1 い い 1 1
#2: Group1 か だ 1 1
#3: Group1 だ ら 1 1
#4: Group1 に い 1 1
#5: Group2 い い 4 4
#以下省略
#データ抽出:filter_dtコマンド
filter_dt(TestData, Chr_Data == "か" | X_num_Data == 3)
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
# <char> <int> <int> <char> <fctr>
#1: Group4 3 58 に の
#2: Group1 5 92 か だ
#3: Group2 48 91 か い
#4: Group4 3 53 い か
#5: Group2 NA 72 か か
#6: Group2 38 70 か ら
#データの降順,昇順:arrange_dtコマンド
#降順は「-」を指定列名に付与;例:-Chr_Data
arrange_dt(TestData, Chr_Data)
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
# <char> <int> <int> <char> <fctr>
#1: Group4 44 66 い い
#2: Group4 3 53 い か
#3: Group2 36 95 い い
#4: Group2 8 75 い い
#5: Group2 42 69 い い
#以下省略
#列の選択:select_dtコマンド
#Chr_Data以外を選択
select_dt(TestData, -Chr_Data)
# Group X_num_Data Y_num_Data Fct_Data
# <char> <int> <int> <fctr>
#1: Group4 3 58 の
#2: Group4 36 76 だ
#3: Group2 31 67 に
#4: Group2 29 58 に
#5: Group1 5 92 だ
#以下省略
###例えば列名を変更する
#rename_dt(Change_Name = Y_num_Data)は列を抽出しない
select_dt(TestData, Change_Name = Y_num_Data)
# Change_Name
# <int>
#1: 58
#2: 76
#3: 67
#4: 58
#5: 92
#以下省略
#mutateコマンドを省略:mutate_dtコマンド
mutate_dt(TestData,
Num_Sum = X_num_Data + Y_num_Data,
Char_Bind = paste0(Chr_Data, "_", Fct_Data))
#Group X_num_Data Y_num_Data Chr_Data Fct_Data Num_Sum Char_Bind
#<char> <int> <int> <char> <fctr> <int> <char>
#1: Group4 3 58 に の 61 に_の
#2: Group4 36 76 の だ 112 の_だ
#3: Group2 31 67 の に 98 の_に
#4: Group2 29 58 に に 87 に_に
#5: Group1 5 92 か だ 97 か_だ
#以下省略
#transmuteコマンドを省略:transmute_dtコマンド
transmute_dt(TestData,
Num_Sum = X_num_Data + Y_num_Data,
Char_Bind = paste0(Chr_Data, "_", Fct_Data))
# Num_Sum Char_Bind
# <int> <char>
#1: 61 に_の
#2: 112 の_だ
#3: 98 の_に
#4: 87 に_に
#5: 97 か_だ
#以下省略
#summariseコマンドを省略:summarise_dtコマンド
summarise_dt(TestData,
Mean = mean(X_num_Data, na.rm = TRUE), by = Group)
# Group Mean
# <char> <num>
#1: Group4 26.90909
#2: Group2 27.20000
#3: Group1 28.50000
#4: Group3 40.00000
#データ型でsummariseコマンドを適応:summarise_varsコマンド
#byオプション使用時は対象グループが同数であること
summarise_vars(TestData, .cols = is.numeric,
.func = list(mean, sd, median),
na.rm = TRUE)
# X_num_Data Y_num_Data fun_name
# <num> <num> <char>
#1: 28.64286 73.93333 mean
#2: 16.78450 13.99244 sd
#3: 32.00000 72.50000 median
#データからサンプリング:sample_dtコマンド
#サンプリングする個数:nオプション
#サンプリングする割合:propオプション;0:1
#サンプリングの重複を許可:replaceオプション
#グループ毎にサンプリング:byオプション
sample_dt(TestData, prop = .05,
replace = FALSE, by = NULL)
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
# <char> <int> <int> <char> <fctr>
#1: Group4 42 69 い い
#データからN個サンプリング:sample_n_dtコマンド
#オプションはsample_dtコマンドと共通
sample_n_dt(TestData, size = 1,
by = "Group")
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
# <char> <int> <int> <char> <fctr>
#1: Group4 49 56 い の
#2: Group2 NA 72 か か
#3: Group1 40 72 に い
#4: Group3 41 60 に だ
#データからN割合サンプリング:sample_frac_dtコマンド
#オプションはsample_dtコマンドと共通
sample_frac_dt(TestData, size = .05,
by = "Group")
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
# <char> <int> <int> <char> <fctr>
#1: Group4 49 82 い い
#2: Group2 23 72 か か
#3: Group1 20 66 い い
#4: Group3 47 85 だ ら
#データのネスト:nest_dtコマンド
nest_dt(TestData, Group) -> NestData
NestData
# Group ndt
# <char> <list>
# 1: Group4 <data.table[12x4]>
# 2: Group2 <data.table[11x4]>
# 3: Group1 <data.table[4x4]>
# 4: Group3 <data.table[3x4]>
#データのネスト解除:unnest_dtコマンド
unnest_dt(NestData, ndt)
# Group X_num_Data Y_num_Data Chr_Data Fct_Data
#<char> <int> <int> <char> <fctr>
#1: Group4 3 58 に の
#2: Group4 36 76 の だ
#3: Group4 2 82 に ら
#4: Group4 44 66 い い
#5: Group4 3 53 い か
#以下省略
少しでも、あなたの解析が楽になりますように!!