Learn R Programming

⚠️There's a newer version (1.6.3) of this package.Take me there.

gtsummary

The {gtsummary} package provides an elegant and flexible way to create publication-ready analytical and summary tables using the R programming language. The {gtsummary} package summarizes data sets, regression models, and more, using sensible defaults with highly customizable capabilities.

  • Summarize data frames or tibbles easily in R. Perfect for presenting descriptive statistics, comparing group demographics (e.g creating a Table 1 for medical journals), and more. Automatically detects continuous, categorical, and dichotomous variables in your data set, calculates appropriate descriptive statistics, and also includes amount of missingness in each variable.

  • Summarize regression models in R and include reference rows for categorical variables. Common regression models, such as logistic regression and Cox proportional hazards regression, are automatically identified and the tables are pre-filled with appropriate column headers (i.e. Odds Ratio and Hazard Ratio).

  • Customize gtsummary tables using a growing list of formatting/styling functions. Bold labels, italicize levels, add p-value to summary tables, style the statistics however you choose, merge or stack tables to present results side by side… there are so many possibilities to create the table of your dreams!

  • Report statistics inline from summary tables and regression summary tables in R markdown. Make your reports completely reproducible!

By leveraging {broom}, {gt}, and {labelled} packages, {gtsummary} creates beautifully formatted, ready-to-share summary and result tables in a single line of R code!

Check out the examples below, review the vignettes for a detailed exploration of the output options, and view the gallery for various customization examples.

Installation

The {gtsummary} package was written as a companion to the {gt} package from RStudio. You can install {gtsummary} with the following code.

install.packages("gtsummary")

Install the development version of {gtsummary} with:

remotes::install_github("ddsjoberg/gtsummary")

Examples

Summary Table

Use tbl_summary() to summarize a data frame.

Example basic table:

library(gtsummary)
# make dataset with a few variables to summarize
trial2 <- trial %>% select(age, grade, response, trt)

# summarize the data with our package
table1 <- tbl_summary(trial2)

There are many customization options to add information (like comparing groups) and format results (like bold labels) in your table. See the tbl_summary() tutorial for many more options, or below for one example.

table2 <- 
  tbl_summary(
    trial2,
    by = trt, # split table by group
    missing = "no" # don't list missing data separately
  ) %>%
  add_n() %>% # add column with total number of non-missing observations
  add_p() %>% # test for a difference between groups
  modify_header(label = "**Variable**") %>% # update the column header
  bold_labels() 

Regression Models

Use tbl_regression() to easily and beautifully display regression model results in a table. See the tutorial for customization options.

mod1 <- glm(response ~ trt + age + grade, trial, family = binomial)

t1 <- tbl_regression(mod1, exponentiate = TRUE)

Side-by-side Regression Models

You can also present side-by-side regression model results using tbl_merge()

library(survival)
#> Warning: package 'survival' was built under R version 4.0.3

# build survival model table
t2 <-
  coxph(Surv(ttdeath, death) ~ trt + grade + age, trial) %>%
  tbl_regression(exponentiate = TRUE)

# merge tables 
tbl_merge_ex1 <-
  tbl_merge(
    tbls = list(t1, t2),
    tab_spanner = c("**Tumor Response**", "**Time to Death**")
  )

Review even more output options in the table gallery.

gtsummary + R Markdown

The {gtsummary} package was written to be a companion to the {gt} package from RStudio. But not all output types are supported by the {gt} package. Therefore, we have made it possible to print {gtsummary} tables with various engines.

Review the gtsummary + R Markdown vignette for details.

Contributing

Please note that the {gtsummary} project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms. A big thank you to all contributors!
@ablack3, @aghaynes, @ahinton-mmc, @alexis-catherine, @anaavu, @angelgar, @asshah4, @barthelmes, @benediktclaus, @calebasaraba, @CarolineXGao, @CodieMonster, @ctlamb, @davidgohel, @davidkane9, @dax44, @ddsjoberg, @DeFilippis, @denis-or, @djbirke, @emilyvertosick, @gorkang, @GuiMarthe, @hughjonesd, @IsadoraBM, @j-tamad, @jalavery, @jeanmanguy, @jemus42, @jennybc, @JeremyPasco, @JesseRop, @jflynn264, @jjallaire, @joelgautschi, @juseer, @jwilliman, @karissawhiting, @khizzr, @kmdono02, @larmarange, @leejasme, @ltin1214, @margarethannum, @Marsus1972, @matthieu-faron, @mbac, @MelissaAssel, @michaelcurry1123, @moleps, @MyKo101, @oranwutang, @Pascal-Schmidt, @proshano, @ryzhu75, @sammo3182, @sbalci, @simonpcouch, @slb2240, @slobaugh, @storopoli, @tjmeyers, @tormodb, @UAB-BST-680, @Uriahf, @zabore, and @zeyunlu

Copy Link

Version

Install

install.packages('gtsummary')

Monthly Downloads

42,218

Version

1.3.6

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Daniel D. Sjoberg

Last Published

January 8th, 2021

Functions in gtsummary (1.3.6)

add_difference

Add difference between groups
add_nevent.tbl_survfit

Add column with number of observed events
add_nevent

Add number of events to a regression table
add_n.tbl_survfit

Add column with number of observations
add_n.tbl_summary

Add column with N
add_nevent.tbl_regression

Add number of events to a regression table
add_nevent.tbl_uvregression

Add number of events to a regression table
add_glance_source_note

Add glance statistics
add_n

Adds column with N to gtsummary table
add_global_p

Add the global p-values
add_stat_label

Add statistic labels
add_overall

Add column with overall summary statistics
add_p

Adds p-values to gtsummary table
as_kable

Convert gtsummary object to a kable object
custom_tidiers

Collection of custom tidiers
as_flex_table

Convert gtsummary object to a flextable object
deprecated

Deprecated functions
add_stat

Add a custom statistic column
bold_italicize_labels_levels

Bold or Italicize labels or levels in gtsummary tables
add_q

Add a column of q-values to account for multiple comparisons
as_tibble.gtsummary

Convert gtsummary object to a tibble
modify

Modify column headers, footnotes, spanning headers, and table captions
reexports

Objects exported from other packages
print_gtsummary

print and knit_print methods for gtsummary objects
add_p.tbl_svysummary

Adds p-values to svysummary tables
add_p.tbl_survfit

Adds p-value to survfit table
bold_p

Bold significant p-values or q-values
combine_terms

Combine terms in a regression model
inline_text.tbl_regression

Report statistics from regression summary tables inline
inline_text.tbl_cross

Report statistics from cross table inline
inline_text.tbl_survival

Report statistics from survival summary tables inline
inline_text.tbl_uvregression

Report statistics from regression summary tables inline
add_p.tbl_summary

Adds p-values to summary tables
inline_text

Report statistics from gtsummary tables inline
as_hux_table

Convert gtsummary object to a huxtable object
add_p.tbl_cross

Adds p-value to crosstab table
as_gt

Convert gtsummary object to a gt object
gtsummary-package

gtsummary: Presentation-Ready Data Summary and Analytic Result Tables
modify_column_hide

Modify Hidden Columns
tbl_summary

Create a table of summary statistics
remove_row_type

Remove rows by type
select_helpers

Select helper functions
as_kable_extra

Convert gtsummary object to a kableExtra object
tbl_stack

Stacks two or more gtsummary objects
tbl_regression_methods

Methods for tbl_regression
inline_text.tbl_summary

Report statistics from summary tables inline
inline_text.tbl_survfit

Report statistics from survfit tables inline
modify_table_body

Modify table_body
tbl_survfit

Creates table of survival probabilities
tbl_survival.survfit

Creates table of survival probabilities
tbl_survival

Creates table of univariate summary statistics for time-to-event endpoints
tbl_regression

Display regression model results in table
tbl_merge

Merge two or more gtsummary objects
style_number

Style numbers
style_percent

Style percentages
modify_table_header

Modify table_header
style_ratio

Style significant figure-like rounding for ratios
tbl_uvregression

Display univariate regression model results in table
tbl_svysummary

Create a table of summary statistics from a survey object
style_pvalue

Style p-values
trial

Results from a simulated study of two chemotherapy agents
vetted_models

Vetted tidy models
style_sigfig

Style significant figure-like rounding
tbl_cross

Create a cross table of summary statistics
set_gtsummary_theme

Set a gtsummary theme
tests

Tests/methods available in add_p() and add_difference()
sort_filter_p

Sort and filter variables in table by p-values
theme_gtsummary

Available gtsummary themes