Skip to contents

Enhanced cross-tabulation analysis using the danchaltiel/crosstable package for advanced clinical research functionality.

Usage

enhancedcrosstable(
  data,
  vars,
  by_var,
  percent_pattern = "col_percent",
  show_total = TRUE,
  show_total_row = TRUE,
  test_auto = TRUE,
  effect_size = FALSE,
  funs_arg = "mean_sd",
  digits = 2,
  use_labels = TRUE,
  exclude_missing = TRUE,
  show_n_col = TRUE,
  margin = "column",
  cor_method = "pearson",
  showNA = "no",
  compact = FALSE,
  export_format = "html",
  show_interpretation = TRUE
)

Arguments

data

The data as a data frame.

vars

Variables to include in the cross-tabulation (table rows).

by_var

The grouping variable for cross-tabulation (table columns).

percent_pattern

Pattern for displaying counts and percentages.

show_total

Whether to include a total column.

show_total_row

Whether to include a total row.

test_auto

Whether to automatically select and perform statistical tests.

effect_size

Whether to calculate effect sizes (Cramer's V, odds ratios, etc.).

funs_arg

Function for summarizing continuous variables.

digits

Number of decimal places for numeric results.

use_labels

Whether to use variable labels if available.

exclude_missing

Whether to exclude missing values from calculations.

show_n_col

Whether to show sample sizes for each column.

margin

Margin for calculating percentages.

cor_method

Correlation method for continuous variables.

showNA

Whether and when to show missing values in the table.

compact

Whether to use compact table formatting.

export_format

Format for table export and display.

show_interpretation

Whether to include interpretation of statistical results.

Value

A results object containing:

results$instructionsa html
results$crosstable_maina html
results$statistics_tablea html
results$effect_sizesa html
results$interpretationa html
results$export_dataa html
results$summary_statsa html

Examples

# \donttest{
# Example usage:
library(crosstable)
#> Warning: package ‘crosstable’ was built under R version 4.3.3
#> 
#> Attaching package: ‘crosstable’
#> The following object is masked from ‘package:ClinicoPath’:
#> 
#>     crosstable
# Enhanced crosstable with tidyselect
crosstable(data, c(var1, var2), by = group_var)
#> Error in base::tryCatch(base::withCallingHandlers({    NULL    base::saveRDS(base::do.call(base::do.call, base::c(base::readRDS("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-fun-fcbc2ddda66c"),         base::list(envir = .GlobalEnv, quote = TRUE)), envir = .GlobalEnv,         quote = TRUE), file = "/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",         compress = FALSE)    base::flush(base::stdout())    base::flush(base::stderr())    NULL    base::invisible()}, error = function(e) {    {        callr_data <- base::as.environment("tools:callr")$`__callr_data__`        err <- callr_data$err        if (FALSE) {            base::assign(".Traceback", base::.traceback(4), envir = callr_data)            utils::dump.frames("__callr_dump__")            base::assign(".Last.dump", .GlobalEnv$`__callr_dump__`,                 envir = callr_data)            base::rm("__callr_dump__", envir = .GlobalEnv)        }        e <- err$process_call(e)        e2 <- err$new_error("error in callr subprocess")        class <- base::class        class(e2) <- base::c("callr_remote_error", class(e2))        e2 <- err$add_trace_back(e2)        cut <- base::which(e2$trace$scope == "global")[1]        if (!base::is.na(cut)) {            e2$trace <- e2$trace[-(1:cut), ]        }        base::saveRDS(base::list("error", e2, e), file = base::paste0("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",             ".error"))    }}, interrupt = function(e) {    {        callr_data <- base::as.environment("tools:callr")$`__callr_data__`        err <- callr_data$err        if (FALSE) {            base::assign(".Traceback", base::.traceback(4), envir = callr_data)            utils::dump.frames("__callr_dump__")            base::assign(".Last.dump", .GlobalEnv$`__callr_dump__`,                 envir = callr_data)            base::rm("__callr_dump__", envir = .GlobalEnv)        }        e <- err$process_call(e)        e2 <- err$new_error("error in callr subprocess")        class <- base::class        class(e2) <- base::c("callr_remote_error", class(e2))        e2 <- err$add_trace_back(e2)        cut <- base::which(e2$trace$scope == "global")[1]        if (!base::is.na(cut)) {            e2$trace <- e2$trace[-(1:cut), ]        }        base::saveRDS(base::list("error", e2, e), file = base::paste0("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",             ".error"))    }}, callr_message = function(e) {    base::try(base::signalCondition(e))}), error = function(e) {    NULL    if (FALSE) {        base::try(base::stop(e))    }    else {        base::invisible()    }}, interrupt = function(e) {    NULL    if (FALSE) {        e    }    else {        base::invisible()    }}): 1 assertions failed:
#>  * Variable 'data': Must be of type 'data.frame', not 'closure'.
# Formula interface
crosstable(data, c(age_group = age > 65), by = treatment)
#> Error in base::tryCatch(base::withCallingHandlers({    NULL    base::saveRDS(base::do.call(base::do.call, base::c(base::readRDS("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-fun-fcbc2ddda66c"),         base::list(envir = .GlobalEnv, quote = TRUE)), envir = .GlobalEnv,         quote = TRUE), file = "/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",         compress = FALSE)    base::flush(base::stdout())    base::flush(base::stderr())    NULL    base::invisible()}, error = function(e) {    {        callr_data <- base::as.environment("tools:callr")$`__callr_data__`        err <- callr_data$err        if (FALSE) {            base::assign(".Traceback", base::.traceback(4), envir = callr_data)            utils::dump.frames("__callr_dump__")            base::assign(".Last.dump", .GlobalEnv$`__callr_dump__`,                 envir = callr_data)            base::rm("__callr_dump__", envir = .GlobalEnv)        }        e <- err$process_call(e)        e2 <- err$new_error("error in callr subprocess")        class <- base::class        class(e2) <- base::c("callr_remote_error", class(e2))        e2 <- err$add_trace_back(e2)        cut <- base::which(e2$trace$scope == "global")[1]        if (!base::is.na(cut)) {            e2$trace <- e2$trace[-(1:cut), ]        }        base::saveRDS(base::list("error", e2, e), file = base::paste0("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",             ".error"))    }}, interrupt = function(e) {    {        callr_data <- base::as.environment("tools:callr")$`__callr_data__`        err <- callr_data$err        if (FALSE) {            base::assign(".Traceback", base::.traceback(4), envir = callr_data)            utils::dump.frames("__callr_dump__")            base::assign(".Last.dump", .GlobalEnv$`__callr_dump__`,                 envir = callr_data)            base::rm("__callr_dump__", envir = .GlobalEnv)        }        e <- err$process_call(e)        e2 <- err$new_error("error in callr subprocess")        class <- base::class        class(e2) <- base::c("callr_remote_error", class(e2))        e2 <- err$add_trace_back(e2)        cut <- base::which(e2$trace$scope == "global")[1]        if (!base::is.na(cut)) {            e2$trace <- e2$trace[-(1:cut), ]        }        base::saveRDS(base::list("error", e2, e), file = base::paste0("/var/folders/cd/2ybg5n514bdfsg2n2wnsspmw0000gn/T//RtmplvSg0q/callr-res-fcbc32d913fa",             ".error"))    }}, callr_message = function(e) {    base::try(base::signalCondition(e))}), error = function(e) {    NULL    if (FALSE) {        base::try(base::stop(e))    }    else {        base::invisible()    }}, interrupt = function(e) {    NULL    if (FALSE) {        e    }    else {        base::invisible()    }}): 1 assertions failed:
#>  * Variable 'data': Must be of type 'data.frame', not 'closure'.
# }