クロステーブルの作成に便利なパッケージの紹介です。出現数をパーセントなどに変換、信頼区間を追加で表示、テーブルを指標で分割、条件で文字の色付けや体裁を整えたクロステーブルをエクセルで表示するコマンドが収録されています。
パッケージバージョンは1.0.2。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("tabxplor")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("tabxplor") ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 50 TestData <- tibble(Group = sample(paste0("Group", 1:4), n, replace = TRUE), ID = sample(LETTERS[1:5], n, replace = TRUE), Year = sample(c(2020, 2021, 2022), n, replace = TRUE), X_num_Data = sample(c(1:50), n, replace = TRUE), Y_num_Data = sample(c(51:100), n, replace = TRUE)) %>% mutate(X_Y_Rate = X_num_Data / Y_num_Data) ######## #クロステーブルの作成:tabコマンド #行側データを指定:row_varオプション #列側データを指定:col_varオプション tab(data = TestData, row_var = Group, col_var = ID) #A tabxplor tab: 5 x 7 # Group A B D E C Total # <fct> <n-mixed> <n> <n> <n> <n-mixed> <n-mixed> #1 Group1 3 1 1 2 0 7 #2 Group2 5 3 3 1 3 15 #3 Group3 0 1 1 4 5 11 #4 Group4 5 5 3 2 2 17 #5 Total 13 10 8 9 10 50 ###################################################################### #出現数をパーセンテージに計算:pctオプション #行側:"row",列側:"col",Subテーブル/グループで両方向:"all" #テーブル全体で両方向:""all_tabs"" tab(data = TestData, row_var = Group, col_var = ID, pct = "row") #A tabxplor tab: 5 x 7 # Group A B D E C Total # <fct> <row%> <row%> <row%> <row%> <row%> <row%> #1 Group1 43% 14% 14% 29% 0% 100% #2 Group2 33% 20% 20% 7% 20% 100% #3 Group3 0% 9% 9% 36% 45% 100% #4 Group4 29% 29% 18% 12% 12% 100% #5 Total 26% 20% 16% 18% 20% 100% ###################################################################### #信頼区間を表示:ciオプション; #"cell","diff","auto" tab(data = TestData, row_var = Group, col_var = ID, pct = "row", ci = "cell") ## A tabxplor tab: 5 x 7 # Group A B D E C Total # <fct> <row%> <row%> <row%> <row%> <row%> <row%> #1 Group1 43%±32.1 14%±37.0 14%±37.0 29%±35.5 0%±35.4 100% #2 Group2 33%±25.0 20%±25.2 20%±25.2 7%±23.1 20%±25.2 100% #3 Group3 0%±25.9 9%±28.6 9%±28.6 36%±28.3 45%±26.5 100% #4 Group4 29%±23.7 29%±23.7 18%±23.4 12%±22.6 12%±22.6 100% #5 Total 26% 20% 16% 18% 20% 100% ###################################################################### #テーブルの分割:tab_varsオプション tab(data = TestData, row_var = Group, col_var = ID, pct = "row", tab_vars = Year) ## A tabxplor tab: 15 x 8 # Groups: Year [4] # Year Group A B C D E Total # <fct> <fct> <row%> <row%> <row%> <row%> <row%> <row%> # 1 2020 Group2 57% 14% 14% 14% 0% 100% # 2 2020 Group3 0% 0% 50% 0% 50% 100% # 3 2020 Group4 20% 40% 0% 20% 20% 100% # 4 2020 TOTAL 2020 36% 21% 14% 14% 14% 100% # 5 2021 Group1 33% 0% 0% 0% 67% 100% # 6 2021 Group2 25% 25% 25% 0% 25% 100% # 7 2021 Group3 0% 0% 75% 0% 25% 100% # 8 2021 Group4 50% 33% 0% 17% 0% 100% # 9 2021 TOTAL 2021 29% 18% 24% 6% 24% 100% #10 2022 Group1 50% 25% 0% 25% 0% 100% #11 2022 Group2 0% 25% 25% 50% 0% 100% #12 2022 Group3 0% 20% 20% 20% 40% 100% #13 2022 Group4 17% 17% 33% 17% 17% 100% #14 2022 TOTAL 2022 16% 21% 21% 26% 16% 100% #15 Ensemble TOTAL ENSEMBLE 26% 20% 20% 16% 18% 100% ###################################################################### #補助列変数:sup_colsオプション tab(data = TestData, row_var = Group, col_var = ID, pct = "row", tab_vars = Year, sup_cols = "X_num_Data") # A tabxplor tab: 15 x 9 # Groups: Year [4] # Year Group A B C D E Total X_num_Data # <fct> <fct> <row%> <row%> <row%> <row%> <row%> <row%> <mean> # 1 2020 Group2 57% 14% 14% 14% 0% 100% 36 # 2 2020 Group3 0% 0% 50% 0% 50% 100% 32 # 3 2020 Group4 20% 40% 0% 20% 20% 100% 27 # 4 2020 TOTAL 2020 36% 21% 14% 14% 14% 100% 32 # 5 2021 Group1 33% 0% 0% 0% 67% 100% 23 # 6 2021 Group2 25% 25% 25% 0% 25% 100% 18 # 7 2021 Group3 0% 0% 75% 0% 25% 100% 18 # 8 2021 Group4 50% 33% 0% 17% 0% 100% 9 # 9 2021 TOTAL 2021 29% 18% 24% 6% 24% 100% 16 #10 2022 Group1 50% 25% 0% 25% 0% 100% 30 #11 2022 Group2 0% 25% 25% 50% 0% 100% 10 #12 2022 Group3 0% 20% 20% 20% 40% 100% 34 #13 2022 Group4 17% 17% 33% 17% 17% 100% 39 #14 2022 TOTAL 2022 16% 21% 21% 26% 16% 100% 30 #15 Ensemble TOTAL ENSEMBLE 26% 20% 20% 16% 18% 100% 26 ###################################################################### #条件で文字の色付け:colorオプション #色無:"no",Totalからの差:"diff", #"diff_ci","after_ci","contrib","auto" #詳細は?tabを実行して参照 tab(data = TestData, row_var = Group, col_var = ID, pct = "row", tab_vars = Year, sup_cols = "X_num_Data", color = "diff") ###################################################################### #表をエクセルで表示:tab_xlコマンド #sup_colsオプションを使うとエラーが出る? tab(data = TestData, row_var = Group, col_var = ID, pct = "row", tab_vars = Year, color = "diff") %>% tab_xl(replace = TRUE, sheets = "auto")
出力例
・クロステーブルをコンソールに表示(条件で文字の色付け:colorオプション)
・tab_xlコマンド
少しでも、あなたの解析が楽になりますように!!