クロステーブルの作成に便利なパッケージの紹介です。出現数をパーセントなどに変換、信頼区間を追加で表示、テーブルを指標で分割、条件で文字の色付けや体裁を整えたクロステーブルをエクセルで表示するコマンドが収録されています。
パッケージバージョンは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コマンド

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