Merge gtsummary tables, e.g. tbl_regression
, tbl_uvregression
, tbl_stack
,
tbl_summary
, tbl_svysummary
, etc.
tbl_merge(tbls, tab_spanner = NULL, merge_vars = NULL)
(list
)
List of gtsummary objects to merge
(character
)
Character vector specifying the spanning headers.
Must be the same length as tbls
. The
strings are interpreted with gt::md
.
Must be same length as tbls
argument. Default is NULL
, and places
a default spanning header. If FALSE
, no header will be placed.
(character
)
Column names that are used as the merge IDs.
The default is NULL
, which merges on
c(any_of(c("variable", "row_type", "var_label", "label"), cards::all_ard_groups())
.
Any column name included here that does not appear in all tables, will
be removed.
A 'tbl_merge'
object
# Example 1 ----------------------------------
# Side-by-side Regression Models
library(survival)
t1 <-
glm(response ~ trt + grade + age, trial, family = binomial) %>%
tbl_regression(exponentiate = TRUE)
t2 <-
coxph(Surv(ttdeath, death) ~ trt + grade + age, trial) %>%
tbl_regression(exponentiate = TRUE)
tbl_merge(
tbls = list(t1, t2),
tab_spanner = c("**Tumor Response**", "**Time to Death**")
)
OR
95% CI
p-value
HR
95% CI
p-value
Abbreviations: CI = Confidence Interval, HR = Hazard Ratio, OR = Odds Ratio
# Example 2 ----------------------------------
# Descriptive statistics alongside univariate regression, with no spanning header
t3 <-
trial[c("age", "grade", "response")] %>%
tbl_summary(missing = "no") %>%
add_n() %>%
modify_header(stat_0 ~ "**Summary Statistics**")
t4 <-
tbl_uvregression(
trial[c("ttdeath", "death", "age", "grade", "response")],
method = coxph,
y = Surv(ttdeath, death),
exponentiate = TRUE,
hide_n = TRUE
)
tbl_merge(tbls = list(t3, t4)) %>%
modify_spanning_header(everything() ~ NA_character_)
Characteristic
N
Summary Statistics1
HR
95% CI
p-value
Abbreviations: CI = Confidence Interval, HR = Hazard Ratio
1 Median (Q1, Q3); n (%)