Rで解析:クロステーブルの作成が楽々!!「tabxplor」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

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

パッケージバージョンは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コマンド


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

タイトルとURLをコピーしました