Build a stratified gtsummary table. Any gtsummary table that accepts a data frame as its first argument can be stratified.
In tbl_strata(), the stratified or subset data frame is passed to the
function in .tbl_fun=, e.g. purrr::map(data, .tbl_fun).
In tbl_strata2(), both the stratified data frame and the strata level
are passed to .tbl_fun=, e.g. purrr::map2(data, strata, .tbl_fun).
When merging, keep in mind that merging works best with like tables.
See tbl_merge() for details.
tbl_strata(
data,
strata,
.tbl_fun,
...,
.sep = ", ",
.combine_with = c("tbl_merge", "tbl_stack"),
.combine_args = NULL,
.header = ifelse(.combine_with == "tbl_merge", "**{strata}**", "{strata}"),
.quiet = NULL
)
tbl_strata2(
data,
strata,
.tbl_fun,
...,
.sep = ", ",
.combine_with = c("tbl_merge", "tbl_stack"),
.combine_args = NULL,
.header = ifelse(.combine_with == "tbl_merge", "**{strata}**", "{strata}"),
.quiet = TRUE
)(data.frame, survey.design)
a data frame or survey object
(tidy-select)
character vector or tidy-selector of columns in data to stratify results by.
Only observed combinations are shown in results.
(function)
A function or formula. If a function, it is used as is.
If a formula, e.g. ~ .x %>% tbl_summary() %>% add_p(), it is converted to a function.
The stratified data frame is passed to this function.
Additional arguments passed on to the .tbl_fun function.
(string)
when more than one stratifying variable is passed, this string is
used to separate the levels in the spanning header. Default is ", "
(string)
One of c("tbl_merge", "tbl_stack"). Names the function
used to combine the stratified tables.
(named list)
named list of arguments that are passed to function specified in .combine_with
(string)
String indicating the headers that will be placed.
Default is "**{strata}**" when .combine_with = "tbl_merge" and
"{strata}" when .combine_with = "tbl_stack". Items placed in
curly brackets will be evaluated according to glue::glue() syntax.
- strata stratum levels
- n N within stratum
- N Overall N
The evaluated value of .header is also available within tbl_strata2(.tbl_fun)
The number of digits continuous variables are rounded to is determined
separately within each stratum of the data frame. Set the digits=
argument to ensure continuous variables are rounded to the same number
of decimal places.
If some levels of a categorical variable are unobserved within a stratum, convert the variable to a factor to ensure all levels appear in each stratum's summary table.
The summary type for variables (e.g. continuous vs categorical vs dichotomous)
are determined separately within stratum. Use the tbl_summary(type)
argument to assign a summary type consistent across all tables being combined.
By default, a "missing" row appears when there are missing values only.
Use the tbl_summary(missing) argument to ensure there is always/never
a missing row for the combining of the tables.
# Example 1 ----------------------------------
trial |>
select(age, grade, stage, trt) |>
mutate(grade = paste("Grade", grade)) |>
tbl_strata(
strata = grade,
.tbl_fun =
~ .x |>
tbl_summary(by = trt, missing = "no") |>
add_n(),
.header = "**{strata}**, N = {n}"
)
N
Drug A
N = 351
Drug B
N = 331
N
Drug A
N = 321
Drug B
N = 361
N
Drug A
N = 311
Drug B
N = 331
1 Median (Q1, Q3); n (%)
# Example 2 ----------------------------------
trial |>
select(grade, response) |>
mutate(grade = paste("Grade", grade)) |>
tbl_strata2(
strata = grade,
.tbl_fun =
~ .x %>%
tbl_summary(
label = list(response = .y),
missing = "no",
statistic = response ~ "{p}%"
) |>
add_ci(pattern = "{stat} ({ci})") |>
modify_header(stat_0 = "**Rate (95% CI)**") |>
remove_footnote_header(stat_0),
.combine_with = "tbl_stack",
.combine_args = list(group_header = NULL)
) |>
modify_caption("**Response Rate by Grade**")
Response Rate by Grade
Characteristic
Rate (95% CI)
Abbreviation: CI = Confidence Interval