本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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

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

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

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.