The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Automated, Reproducible Generation of Results Tables: Bridging the Rift Between Epidemiologists and Their Data

R-CMD-check Codecov test coverage

Tables are the key format in which epidemiologists present their results. Many results tables in applied studies merely show point estimates and confidence intervals, or even p-values, from regression models: a “growing rift between epidemiologists and their data” (Rothman 2017). “Actual,” descriptive data, such as counts stratified by exposure and a main confounder or effect modifier, are often lacking.

rifttable creates presentation-ready results tables for epidemiologists in an automated, reproducible fashion. The user provides the final analytical dataset and specifies the design of the table, with rows and/or columns defined by exposure(s), effect modifier(s), and estimands as desired, allowing to show descriptors and inferential estimates in one table – bridging the rift between epidemiologists and their data, one table at a time.

Installation

The rifttable package can be installed from CRAN:

install.packages("rifttable")

Development versions can be installed from GitHub using:

remotes::install_github("stopsack/rifttable")

The latter installation procedure requires the remotes package, obtainable via install.packages("remotes").

Example

library(rifttable)

example_design <- tibble::tribble(
  ~label,                       ~type,                   ~stratum,
  "Overall",                    "",                      "",
  "– Deaths/N",                 "outcomes/total",        c("Low", "High"),
  "– Risk",                     "risk",                  c("Low", "High"),
  "– Risk ratio (95% CI)",      "rr",                    c("Low", "High"),
  "– Risk difference (95% CI)", "rd",                    c("Low", "High"),
  "",                           "",                      "",
  "Low hormone receptor",       "",                      "",
  "– Deaths/N (Risk)",          "outcomes/total (risk)", "Low",
  "– Risk difference (95% CI)", "rd",                    "Low",
  "High hormone receptor",      "",                      "",
  "– Deaths/N (Risk)",          "outcomes/total (risk)", "High",
  "– Risk difference (95% CI)", "rd",                    "High"
) |> 
  dplyr::mutate(
    exposure = "stage",
    outcome = "death",
    effect_modifier = "receptor"
  )

rifttable(
  design = example_design,
  data = risks::breastcancer
)
Stage Stage I Stage II Stage III
Overall
– Deaths/N 7/67 26/96 21/29
– Risk 0.10 0.27 0.72
– Risk ratio (95% CI) 1 (reference) 2.59 (1.20, 5.6) 6.9 (3.3, 14)
– Risk difference (95% CI) 0 (reference) 0.17 (0.05, 0.28) 0.62 (0.44, 0.80)
Low hormone receptor
– Deaths/N (Risk) 2/12 (0.17) 9/22 (0.41) 12/14 (0.86)
– Risk difference (95% CI) 0 (reference) 0.24 (-0.05, 0.54) 0.69 (0.41, 0.97)
High hormone receptor
– Deaths/N (Risk) 5/55 (0.09) 17/74 (0.23) 9/15 (0.60)
– Risk difference (95% CI) 0 (reference) 0.14 (0.02, 0.26) 0.51 (0.25, 0.77)

For more examples, see the Get Started vignette.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.