Learn R Programming

sumExtras

sumExtras: "SUMmary table EXTRAS"

Overview

{sumExtras} reduces the repetitive boilerplate in {gtsummary} workflows. One function replaces five. Stop copy-pasting add_overall(), add_p(), bold_labels(), and modify_header() on every table. Call extras() once. The package also handles missing value cleanup, automatic variable labeling from data dictionaries, group header styling, and JAMA compact theming.

Installation

CRAN

install.packages("sumExtras")

Development version

# install.packages("pak")
pak::pak("kyleGrealis/sumExtras")

Quick Start

library(sumExtras)
library(gtsummary)

Standard {gtsummary}

theme_gtsummary_compact("jama")

trial |>
  tbl_summary(by = trt) |>
  add_overall() |>
  add_p() |>
  bold_labels() |>
  bold_p() |>
  modify_header(label = "")

With {sumExtras}

use_jama_theme()

trial |>
  tbl_summary(by = trt) |>
  extras()

That single extras() call replaces add_overall(), add_p(), bold_labels(), bold_p(), and modify_header(). It also standardizes missing values via clean_table().

Functions

  • extras() -- overall column, p-values (bolded), bold labels, clean styling
  • clean_table() -- standardize missing value display
  • add_auto_labels() -- automatic labeling from dictionaries or data attributes
  • use_jama_theme() / theme_gt_compact() -- JAMA compact themes
  • add_group_styling() -- bold/italic formatting for group headers
  • add_group_colors() -- background colors for group headers (converts to {gt})
  • get_group_rows() -- extract group header row indices

Options

  • options(sumExtras.auto_labels = TRUE) -- add labels through the project without needing add_auto_labels() for each table
  • options(sumExtras.prefer_dictionary = TRUE) -- change the labeling priority

More Info

Full documentation

  • vignette("sumExtras-intro") -- getting started
  • vignette("labeling") -- dictionary-based labeling
  • vignette("themes") -- JAMA themes for {gtsummary} and {gt}
  • vignette("styling") -- group headers and advanced formatting
  • vignette("options") -- .Rprofile options for auto-labeling
  • Bug reports & feature requests

FAQ

Why not just use {gtsummary} directly? You can. {sumExtras} wraps the formatting steps you repeat on every table. If you only make one or two tables, you don't need this package.

What happens if something fails inside extras()? It warns and continues. Your table always renders. See the warn-and-continue design in vignette("sumExtras-intro").

Why didn't my dictionary labels show up? Your data likely has label attributes that take priority. Set options(sumExtras.prefer_dictionary = TRUE) or see vignette("labeling").

Does extras() work with survey data? Yes. tbl_svysummary tables get the same treatment as tbl_summary.

Contributing

Bug reports, feature requests, and feedback are welcome at https://github.com/kyleGrealis/sumExtras/issues.

License

MIT

Copy Link

Version

Install

install.packages('sumExtras')

Version

1.0.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Kyle Grealis

Last Published

February 11th, 2026

Functions in sumExtras (1.0.0)

add_auto_labels

Add automatic labels from dictionary to a gtsummary table
clean_table

Standardize missing value display across all gtsummary table types
add_group_colors

Add background colors to group headers with automatic gt conversion
get_group_rows

Get row numbers of variable group headers for gt styling
use_jama_theme

Apply JAMA Compact Theme to gtsummary Tables
extras

Add standard styling and formatting to gtsummary tables
add_group_styling

Apply styling to variable group headers in gtsummary tables
theme_gt_compact

Apply compact JAMA-style theme to gt tables
sumExtras-package

sumExtras: Extra Functions for 'gtsummary' Table Styling