View source: R/datasummary_crosstab.R
| datasummary_crosstab | R Documentation |
Convenience function to tabulate counts, cell percentages, and row/column
percentages for categorical variables. See the Details section for a
description of the internal design. For more complex cross tabulations, use
datasummary directly. See the Details and Examples sections below,
and the vignettes on the modelsummary website:
https://modelsummary.com/
https://modelsummary.com/vignettes/datasummary.html
datasummary_crosstab(
formula,
statistic = 1 ~ 1 + N + Percent("row"),
data,
output = getOption("modelsummary_output", default = "default"),
fmt = 1,
title = getOption("modelsummary_title", default = NULL),
notes = getOption("modelsummary_notes", default = NULL),
align = getOption("modelsummary_align", default = NULL),
add_columns = getOption("modelsummary_add_columns", default = NULL),
add_rows = getOption("modelsummary_add_rows", default = NULL),
sparse_header = getOption("modelsummary_sparse_header", default = TRUE),
escape = getOption("modelsummary_escape", default = TRUE),
...
)
formula |
A two-sided formula to describe the table: rows ~ columns,
where rows and columns are variables in the data. Rows and columns may
contain interactions, e.g., |
statistic |
A formula of the form |
data |
A data.frame (or tibble) |
output |
filename or object type (character string)
|
fmt |
how to format numeric values: integer, user-supplied function, or
|
title |
string. Cross-reference labels should be added with Quarto or Rmarkdown chunk options when applicable. When saving standalone LaTeX files, users can add a label such as |
notes |
list or vector of notes to append to the bottom of the table. |
align |
A string with a number of characters equal to the number of columns in
the table (e.g.,
|
add_columns |
a data.frame (or tibble) with the same number of rows as your main table. |
add_rows |
a data.frame (or tibble) with the same number of columns as your main table. By default, rows are appended to the bottom of the table. Positions can be defined using integers. In the
|
sparse_header |
TRUE or FALSE. TRUE eliminates column headers which
have a unique label across all columns, except for the row immediately above
the data. FALSE keeps all headers. The order in which terms are entered in
the formula determines the order in which headers appear. For example,
|
escape |
boolean TRUE escapes or substitutes LaTeX/HTML characters which could
prevent the file from compiling/displaying. |
... |
all other arguments are passed through to the table-making
functions tinytable::tt, kableExtra::kbl, gt::gt, DT::datatable, etc. depending on the |
datasummary_crosstab is a wrapper around the datasummary
function. This wrapper works by creating a customized formula and by
feeding it to datasummary. The customized formula comes in two parts.
First, we take a two-sided formula supplied by the formula argument.
All variables of that formula are wrapped in a Factor() call to ensure
that the variables are treated as categorical.
Second, the statistic argument gives a two-sided formula which specifies
the statistics to include in the table. datasummary_crosstab modifies
this formula automatically to include "clean" labels.
Finally, the formula and statistic formulas are combined into a single
formula which is fed directly to the datasummary function to produce the
table.
Variables in formula are automatically wrapped in Factor().
Since version 2.0.0, modelsummary uses tinytable as its default table-drawing backend.
Learn more at: https://vincentarelbundock.github.io/tinytable/",
Revert to kableExtra for one session:
options(modelsummary_factory_default = 'kableExtra')
options(modelsummary_factory_latex = 'kableExtra')
options(modelsummary_factory_html = 'kableExtra')
The behavior of modelsummary can be modified by setting global options. In particular, most of the arguments for most of the package's functions cna be set using global options. For example:
options(modelsummary_output = "modelsummary_list")
options(modelsummary_statistic = '({conf.low}, {conf.high})')
options(modelsummary_stars = TRUE)
Options not specific to given arguments are listed below.
These global option changes the style of the default column headers:
options(modelsummary_model_labels = "roman")
The supported styles are: "model", "arabic", "letters", "roman", "(arabic)", "(letters)", "(roman)"
modelsummary supports 6 table-making packages: tinytable, kableExtra, gt,
flextable, huxtable, and DT. Some of these packages have overlapping
functionalities. To change the default backend used for a specific file
format, you can use ' the options function:
options(modelsummary_factory_html = 'kableExtra')
options(modelsummary_factory_word = 'huxtable')
options(modelsummary_factory_png = 'gt')
options(modelsummary_factory_latex = 'gt')
options(modelsummary_factory_latex_tabular = 'kableExtra')
Change the look of tables in an automated and replicable way, using the modelsummary theming functionality. See the vignette: https://modelsummary.com/vignettes/appearance.html
modelsummary_theme_gt
modelsummary_theme_kableExtra
modelsummary_theme_huxtable
modelsummary_theme_flextable
modelsummary_theme_dataframe
modelsummary can use two sets of packages to extract information from
statistical models: the easystats family (performance and parameters)
and broom. By default, it uses easystats first and then falls back on
broom in case of failure. You can change the order of priorities or include
goodness-of-fit extracted by both packages by setting:
options(modelsummary_get = "easystats")
options(modelsummary_get = "broom")
options(modelsummary_get = "all")
The "all" option (default) means easystats then broom.
By default, LaTeX tables enclose all numeric entries in the \num{} command
from the siunitx package. To prevent this behavior, or to enclose numbers
in dollar signs (for LaTeX math mode), users can call:
options(modelsummary_format_numeric_latex = "plain")
options(modelsummary_format_numeric_latex = "mathmode")
A similar option can be used to display numerical entries using MathJax in HTML tables:
options(modelsummary_format_numeric_html = "mathjax")
When creating LaTeX via the tinytable backend (default in version 2.0.0 and later), it is useful to include the following commands in the LaTeX preamble of your documents. These commands are automatically added to the preamble when compiling Rmarkdown or Quarto documents, except when the modelsummary() calls are cached.
\usepackage{tabularray}
\usepackage{float}
\usepackage{graphicx}
\usepackage[normalem]{ulem}
\UseTblrLibrary{booktabs}
\UseTblrLibrary{siunitx}
\newcommand{\tinytableTabularrayUnderline}[1]{\underline{#1}}
\newcommand{\tinytableTabularrayStrikeout}[1]{\sout{#1}}
\NewTableCommand{\tinytableDefineColor}[3]{\definecolor{#1}{#2}{#3}}
library(modelsummary)
# crosstab of two variables, showing counts, row percentages, and row/column totals
datasummary_crosstab(cyl ~ gear, data = mtcars)
# crosstab of two variables, showing counts only and no totals
datasummary_crosstab(cyl ~ gear, statistic = ~ N, data = mtcars)
# crosstab of three variables
datasummary_crosstab(am * cyl ~ gear, data = mtcars)
# crosstab with two variables and column percentages
datasummary_crosstab(am ~ gear, statistic = ~ Percent("col"), data = mtcars)
Arel-Bundock V (2022). “modelsummary: Data and Model Summaries in R.” Journal of Statistical Software, 103(1), 1-23. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.18637/jss.v103.i01")}.'
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.