スポンサーリンク
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
これでこうです。
↓
便利すぎます。
以下、詳しい使い方です。
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
【ゼロからおさらい】統計学の基礎講座