「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 い か #以下省略
少しでも、あなたの解析が楽になりますように!!