Experimental lifecycle Add the difference between two groups (typically mean difference), along with the difference confidence interval and p-value.

  test = NULL,
  group = NULL,
  adj.vars = NULL,
  test.args = NULL,
  conf.level = 0.95,
  include = everything(),
  pvalue_fun = NULL,
  estimate_fun = style_sigfig



"tbl_summary" object


List of formulas specifying statistical tests to perform for each variable, e.g. list(all_continuous() ~ "t.test"). Common tests include "t.test" or "ancova" for continuous data, and "prop.test" for dichotomous variables. See tests for details and more tests.


Column name (unquoted or quoted) of an ID or grouping variable. The column can be used to calculate p-values with correlated data. Default is NULL. See tests for methods that utilize the group= argument.


Variables to include in mean difference adjustment (e.g. in ANCOVA models)


List of formulas containing additional arguments to pass to tests that accept arguments. For example, add an argument for all t-tests, use test.args = all_tests("t.test") ~ list(var.equal = TRUE)


Must be strictly greater than 0 and less than 1. Defaults to 0.95, which corresponds to a 95 percent confidence interval.


Variables to include in output. Input may be a vector of quoted variable names, unquoted variable names, or tidyselect select helper functions. Default is everything().


Function to round and format p-values. Default is style_pvalue. The function must have a numeric vector input (the numeric, exact p-value), and return a string that is the rounded/formatted p-value (e.g. pvalue_fun = function(x) style_pvalue(x, digits = 2) or equivalently, purrr::partial(style_pvalue, digits = 2)).


Function to round and format difference. Default is style_sigfig()

Example Output

Example 1

Example 2


# Example 1 ---------------------------------- add_difference_ex1 <- trial %>% select(trt, age, marker) %>% tbl_summary(by = trt, statistic = all_continuous() ~ "{mean} ({sd})", missing = "no") %>% add_n() %>% add_difference() # Example 2 ---------------------------------- add_difference_ex2 <- trial %>% select(trt, response, death) %>% tbl_summary(by = trt, statistic = all_dichotomous() ~ "{p}%", missing = "no") %>% modify_footnote(all_stat_cols() ~ NA) %>% add_n() %>% add_difference(estimate_fun = ~paste0(style_sigfig(. * 100), "%"))