Adds labels describing the summary statistics presented for each variable in the tbl_summary / tbl_svysummary table.

add_stat_label(x, location = NULL, label = NULL)



Object with class tbl_summary from the tbl_summary function or with class tbl_svysummary from the tbl_svysummary function


location where statistic label will be included. "row" (the default) to add the statistic label to the variable label row, and "column" adds a column with the statistic label.


a list of formulas or a single formula updating the statistic label, e.g. label = all_categorical() ~ "No. (%)"


A tbl_summary or tbl_svysummary object


When using add_stat_label(location='row') with subsequent tbl_merge(), it's important to have somewhat of an understanding of the underlying structure of the gtsummary table. add_stat_label(location='row') works by adding a new column called "stat_label" to x$table_body. The "label" and "stat_label" columns are merged when the gtsummary table is printed. The tbl_merge() function merges on the "label" column (among others), which is typically the first column you see in a gtsummary table. Therefore, when you want to merge a table that has run add_stat_label(location='row') you need to match the "label" column values before the "stat_column" is merged with it.

For example, the following two tables merge properly

tbl1 <- trial %>% select(age, grade) %>% tbl_summary() %>% add_stat_label()
tbl2 <- lm(marker ~ age + grade, trial) %>% tbl_regression()

tbl_merge(list(tbl1, tbl2))

Example Output

Example 1

Example 2

Example 3

See also


Daniel D. Sjoberg


tbl <- trial %>% dplyr::select(trt, age, grade, response) %>% tbl_summary(by = trt) # Example 1 ---------------------------------- # Add statistic presented to the variable label row add_stat_label_ex1 <- tbl %>% add_stat_label( # update default statistic label for continuous variables label = all_continuous() ~ "med. (iqr)" ) # Example 2 ---------------------------------- add_stat_label_ex2 <- tbl %>% add_stat_label( # add a new column with statistic labels location = "column" ) # Example 3 ---------------------------------- add_stat_label_ex3 <- trial %>% select(age, grade, trt) %>% tbl_summary( by = trt, type = all_continuous() ~ "continuous2", statistic = all_continuous() ~ c("{mean} ({sd})", "{min} - {max}"), ) %>% add_stat_label(label = age ~ c("Mean (SD)", "Min - Max"))