[Maturing] 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)

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}"),
  .stack_group_header = NULL,
  .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}"),
  .stack_group_header = NULL,
  .quiet = NULL
)

Arguments

data

a data frame or survey object

strata

character vector or tidy-selector of columns in data to stratify results by

.tbl_fun

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.

.sep

when more than one stratifying variable is passed, this string is used to separate the levels in the spanning header. Default is ", "

.combine_with

One of c("tbl_merge", "tbl_stack"). Names the function used to combine the stratified tables.

.combine_args

named list of arguments that are passed to function specified in .combine_with=

.header

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=)

.stack_group_header

DEPRECATED.

.quiet

Logical indicating whether to print messages in console. Default is FALSE

Tips

  • tbl_summary()

    • 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.

Example Output

Example 1

image of rendered example table

Example 2

image of rendered example table

Author

Daniel D. Sjoberg

Examples

# \donttest{
# Example 1 ----------------------------------
tbl_strata_ex1 <-
  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}"
  )

# Example 2 ----------------------------------
tbl_strata_ex2 <-
  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)**") %>%
     modify_footnote(stat_0 = NA),
    .combine_with = "tbl_stack",
    .combine_args = list(group_header = NULL),
    .quiet = TRUE
  ) %>%
  modify_caption("**Response Rate by Grade**")
# }