Use these functions to generate hierarchical tables.
tbl_hierarchical()
: Calculates rates of events (e.g. adverse events) utilizing thedenominator
andid
arguments to identify the rows indata
to include in each rate calculation. Ifvariables
contains more than one variable and the last variable invariables
is an ordered factor, then rates of events by highest level will be calculated.tbl_hierarchical_count()
: Calculates counts of events utilizing all rows for each tabulation.
Usage
tbl_hierarchical(
data,
variables,
id,
denominator,
by = NULL,
include = everything(),
statistic = everything() ~ "{n} ({p}%)",
overall_row = FALSE,
label = NULL,
digits = NULL
)
tbl_hierarchical_count(
data,
variables,
denominator = NULL,
by = NULL,
include = everything(),
overall_row = FALSE,
statistic = everything() ~ "{n}",
label = NULL,
digits = NULL
)
Arguments
- data
(
data.frame
)
a data frame.- variables
(
tidy-select
)
character vector or tidy-selector of columns in data used to create a hierarchy. Hierarchy will be built with variables in the order given.- id
(
tidy-select
)
argument used to subsetdata
to identify rows indata
to calculate event rates intbl_hierarchical()
.- denominator
(
data.frame
,integer
)
used to define the denominator and enhance the output. The argument is required fortbl_hierarchical()
and optional fortbl_hierarchical_count()
. Thedenominator
argument must be specified whenid
is used to calculate event rates.- by
(
tidy-select
)
a single column fromdata
. Summary statistics will be stratified by this variable. Default isNULL
.- include
(
tidy-select
)
variables fromhierarchy
for which summary statistics should be returned (on the variable label rows) Including the last element ofhierarchy
has no effect since each level has its own row for this variable. The default iseverything()
.- statistic
(
formula-list-selector
)
used to specify the summary statistics to display for all variables intbl_hierarchical()
. The default iseverything() ~ "{n} ({p})"
.- overall_row
(scalar
logical
)
whether an overall summary row should be included at the top of the table. The default isFALSE
.- label
(
formula-list-selector
)
used to override default labels in hierarchical table, e.g.list(AESOC = "System Organ Class")
. The default for each variable is the column label attribute,attr(., 'label')
. If no label has been set, the column name is used.- digits
(
formula-list-selector
)
Specifies how summary statistics are rounded. Values may be either integer(s) or function(s). If not specified, default formatting is assigned vialabel_style_number()
for statisticsn
andN
, andlabel_style_percent(digits=1)
for statisticp
.
Value
a gtsummary table of class "tbl_hierarchical"
(for tbl_hierarchical()
) or "tbl_hierarchical_count"
(for tbl_hierarchical_count()
).
Overall Row
An overall row can be added to the table as the first row by specifying overall_row = TRUE
. Assuming that each row
in data
corresponds to one event record, this row will count the overall number of events recorded when used in
tbl_hierarchical_count()
, or the overall number of patients recorded with any event when used in
tbl_hierarchical()
.
A label for this overall row can be specified by passing an '..ard_hierarchical_overall..'
element in label
.
Similarly, the rounding for statistics in the overall row can be modified using the digits
argument,
again referencing the '..ard_hierarchical_overall..'
name.
Examples
ADAE_subset <- cards::ADAE |>
dplyr::filter(
AESOC %in% unique(cards::ADAE$AESOC)[1:5],
AETERM %in% unique(cards::ADAE$AETERM)[1:5]
)
# Example 1 - Event Rates --------------------
tbl_hierarchical(
data = ADAE_subset,
variables = c(AESOC, AETERM),
by = TRTA,
denominator = cards::ADSL |> mutate(TRTA = ARM),
id = USUBJID,
digits = everything() ~ list(p = 1),
overall_row = TRUE,
label = list(..ard_hierarchical_overall.. = "Any Adverse Event")
)
Primary System Organ Class
Reported Term for the Adverse Event
Placebo
N = 861
Xanomeline High Dose
N = 841
Xanomeline Low Dose
N = 841
1 n (%)
# Example 2 - Rates by Highest Severity ------
tbl_hierarchical(
data = ADAE_subset |> mutate(AESEV = factor(AESEV, ordered = TRUE)),
variables = c(AESOC, AESEV),
by = TRTA,
id = USUBJID,
denominator = cards::ADSL |> mutate(TRTA = ARM),
include = AESEV,
label = list(AESEV = "Highest Severity")
)
#> ℹ Denominator set by "TRTA" column in `denominator` data frame.
Primary System Organ Class
Highest Severity
Placebo
N = 861
Xanomeline High Dose
N = 841
Xanomeline Low Dose
N = 841
1 n (%)
# Example 3 - Event Counts -------------------
tbl_hierarchical_count(
data = ADAE_subset,
variables = c(AESOC, AETERM, AESEV),
by = TRTA,
overall_row = TRUE,
label = list(..ard_hierarchical_overall.. = "Total Number of AEs")
)
Primary System Organ Class
Reported Term for the Adverse Event
Severity/Intensity
Placebo1
Xanomeline High Dose1
Xanomeline Low Dose1
1 n