These functions assist with modifying the aesthetics/style of a table.
modify_header()
update column headersmodify_footnote()
update/add table footnotesmodify_spanning_header()
update/add spanning headers
The functions often require users to know the underlying column names.
Run show_header_names()
to print the column names to the console.
Arguments
- x
(
gtsummary
)
A gtsummary object- ...
dynamic-dots
Used to assign updates to headers, spanning headers, and footnotes.Use
modify_*(colname='new header/footnote')
to update a single column. Using a formula will invoke tidyselect, e.g.modify_*(all_stat_cols() ~ "**{level}**")
. The dynamic dots allow syntax likemodify_header(x, !!!list(label = "Variable"))
. See examples below.Use the
show_header_names()
to see the column names that can be modified.- text_interpret
(
string
)
String indicates whether text will be interpreted withgt::md()
orgt::html()
. Must be"md"
(default) or"html"
.- update, quiet
- abbreviation
(scalar
logical
)
Logical indicating if an abbreviation is being updated.- include_example
tbl_summary()
, tbl_svysummary()
, and tbl_cross()
When assigning column headers, footnotes, and spanning headers,
you may use {N}
to insert the number of observations.
tbl_svysummary
objects additionally have {N_unweighted}
available.
When there is a stratifying by=
argument present, the following fields are
additionally available to stratifying columns: {level}
, {n}
, and {p}
({n_unweighted}
and {p_unweighted}
for tbl_svysummary
objects)
Syntax follows glue::glue()
, e.g. all_stat_cols() ~ "**{level}**, N = {n}"
.
tbl_regression()
When assigning column headers for tbl_regression
tables,
you may use {N}
to insert the number of observations, and {N_event}
for the number of events (when applicable).
Examples
# create summary table
tbl <- trial |>
tbl_summary(by = trt, missing = "no", include = c("age", "grade", "trt")) |>
add_p()
# print the column names that can be modified
show_header_names(tbl)
#> Column Name Header level* N* n* p*
#> label "**Characteristic**" 200 <int>
#> stat_1 "**Drug A** \nN = 98" Drug A <chr> 200 <int> 98 <int> 0.490 <dbl>
#> stat_2 "**Drug B** \nN = 102" Drug B <chr> 200 <int> 102 <int> 0.510 <dbl>
#> p.value "**p-value**" 200 <int>
#>
#> * These values may be dynamically placed into headers (and other locations).
#> ℹ Review the `modify_header()` (`?gtsummary::modify()`) help for examples.
# Example 1 ----------------------------------
# updating column headers and footnote
tbl |>
modify_header(label = "**Variable**", p.value = "**P**") |>
modify_footnote(all_stat_cols() ~ "median (IQR) for Age; n (%) for Grade")
Variable
Drug A
N = 981
Drug B
N = 1021
P2
1 median (IQR) for Age; n (%) for Grade
2 Wilcoxon rank sum test; Pearson’s Chi-squared test
# Example 2 ----------------------------------
# updating headers, remove all footnotes, add spanning header
tbl |>
modify_header(all_stat_cols() ~ "**{level}**, N = {n} ({style_percent(p)}%)") |>
modify_footnote(everything() ~ NA) |>
modify_spanning_header(all_stat_cols() ~ "**Treatment Received**")
Drug A, N = 98 (49%)
Drug B, N = 102 (51%)
# Example 3 ----------------------------------
# updating an abbreviation in table footnote
glm(response ~ age + grade, trial, family = binomial) |>
tbl_regression(exponentiate = TRUE) |>
modify_footnote(conf.low = "CI = Credible Interval", abbreviation = TRUE)
Characteristic
OR1
95% CI1
p-value
1 OR = Odds Ratio, CI = Credible Interval