Rの使い方:gtsummaryで表は一発で完成

  • 2021年7月8日
  • 2021年10月7日
  • 統計-R
  • 5285view
スポンサーリンク

gtsummaryとは

libraryのgtsummaryを使用すると一発でtableを出力することができます。

こちらの動画をご覧ください。

 

英語の解説が多いので、練習データでgtsummaryを使ってみます。

 

gtsummaryの使い方

まずはコードの例です。

library(gtsummary)
library(tidyverse)
BASELINE <- df %>% 
 select(BMI, Male, HT, DM, HbA1c, LDL.C, SBP, DBP, Medication, Events) %>% 
 mutate(Male = factor(Male, labels = c("Male", "Female"))) %>% 
 tbl_summary(by = Male, missing = "no",
             type = list(c(BMI, HbA1c, LDL.C, SBP, DBP) ~ "continuous",
                         c(HT, DM, Medication, Events) ~ "dichotomous"),
             statistic = list(BMI ~ "{mean} ± {sd}",
                              HbA1c ~ "{mean} ± {sd}"),
             digits = list(c(BMI) ~ 1,
                           c(HbA1c) ~ 2, 
                           all_dichotomous() ~ c(0,1)),
             label = list(BMI ~ "Body mass index", 
                          HT ~ "HT, n (%)",
                          DM ~ "DM, n (%)",
                          HbA1c ~ "HbA1c, %",
                          LDL.C ~ "LDL-C, mg/dL",
                          SBP ~ "SBP, mmHg",
                          DBP ~ "DBP, mmHg",
                          Medication ~ "Medication, n (%)",
                          Events ~ "Events, n (%)"))%>% 
 add_p(pvalue_fun = ~style_pvalue(.x, digits = 3)) %>% 
 bold_p(t = 0.05) %>% 
 modify_header(label = "**Baseline characteristics**", stat_by = "**{level}**<br>n = {N}") %>% 
 add_overall(col_label = "**Overall**<br>n = {N}") %>% 
 modify_spanning_header(c("stat_1", "stat_2") ~ "**性別**") %>% 
 modify_footnote(update = everything() ~ NA)
BASELINE

これでこうです。

画像21

 

便利すぎます。

 

以下、詳しい使い方です。

selectに使いたい項目を入力します。

select(BMI, Male, HT, DM, HbA1c, LDL.C, SBP, DBP, Medication, Events)

data flameではMaleを0か1で表現しているので、mutateでMaleとFemaleに表現し直しています。

mutate(Male = factor(Male, labels = c("Male", "Female"))) 

ここでは性別による違いを評価しているため、byにMaleを入力します。

typeでは連続変数か名義変数かを指定します。

statisticでは「平均±標準偏差」で記載したい項目を指定します。

digitsでは小数点第何位まで記載するかを指定します。

labelでは表での記載を変更できます。

tbl_summary(by = Male, missing = "no",
             type = list(c(BMI, HbA1c, LDL.C, SBP, DBP) ~ "continuous",
                         c(HT, DM, Medication, Events) ~ "dichotomous"),
             statistic = list(BMI ~ "{mean} ± {sd}",
                              HbA1c ~ "{mean} ± {sd}"),
             digits = list(c(BMI) ~ 1,
                           c(HbA1c) ~ 2, 
                           all_dichotomous() ~ c(0,1)),
             label = list(BMI ~ "Body mass index", 
                          HT ~ "HT, n (%)",
                          DM ~ "DM, n (%)",
                          HbA1c ~ "HbA1c, %",
                          LDL.C ~ "LDL-C, mg/dL",
                          SBP ~ "SBP, mmHg",
                          DBP ~ "DBP, mmHg",
                          Medication ~ "Medication, n (%)",
                          Events ~ "Events, n (%)"))                         

add_pのdigitsでp値の小数点を指定、bold_pで太字にするp値の値を指定します。

 add_p(pvalue_fun = ~style_pvalue(.x, digits = 3)) %>% 
 bold_p(t = 0.05) 

ヘッダーの修正については**で挟むと太字になります**。

<br>で改行されます。

add_overallでoverallを追加でき、col_labelで表での記載を変更できます。

 

library(gtsummary)
library(tidyverse)
BASELINE <- df %>% 
 select(BMI, Male, HT, DM, HbA1c, LDL.C, SBP, DBP, Medication, Events) %>% 
 mutate(Male = factor(Male, labels = c("Male", "Female"))) %>% 
 tbl_summary(by = Male, missing = "no",
             type = list(c(BMI, HbA1c, LDL.C, SBP, DBP) ~ "continuous",
                         c(HT, DM, Medication, Events) ~ "dichotomous"),
             statistic = list(BMI ~ "{mean} ± {sd}",
                              HbA1c ~ "{mean} ± {sd}"),
             digits = list(c(BMI) ~ 1,
                           c(HbA1c) ~ 2, 
                           all_dichotomous() ~ c(0,1)),
             label = list(BMI ~ "Body mass index", 
                          HT ~ "HT, n (%)",
                          DM ~ "DM, n (%)",
                          HbA1c ~ "HbA1c, %",
                          LDL.C ~ "LDL-C, mg/dL",
                          SBP ~ "SBP, mmHg",
                          DBP ~ "DBP, mmHg",
                          Medication ~ "Medication, n (%)",
                          Events ~ "Events, n (%)"))%>% 
 add_p(pvalue_fun = ~style_pvalue(.x, digits = 3)) %>% 
 bold_p(t = 0.05) %>% 
 modify_header(label = "**Baseline characteristics**", stat_by = "**{level}**<br>n = {N}") %>% 
 add_overall(col_label = "**Overall**<br>n = {N}") %>% 
 modify_spanning_header(c("stat_1", "stat_2") ~ "**性別**") %>% 
 modify_footnote(update = everything() ~ NA)
BASELINE

 

画像22
【ゼロからおさらい】統計学の基礎講座

 

スポンサーリンク
最新情報をチェックしよう!