Skip to contents

Generates a publication-ready "Table 1" showing descriptive statistics for all covariates, split by treatment status. Computes means, SDs, medians, percentages (for binary), p-values for group differences, and standardized mean differences.

Usage

covariate_summary(
  data,
  treatment,
  vars = NULL,
  var_labels = NULL,
  digits = 2,
  pct_digits = 1,
  test_type = "auto",
  caption = "Baseline Characteristics",
  col_labels = c("Overall", "Control", "Treated")
)

Arguments

data

A data frame.

treatment

Character. Binary treatment indicator (0/1).

vars

Character vector. Variables to summarize. If NULL, all numeric and factor columns except treatment are used.

var_labels

Named character vector. Display labels for variables. Names are variable names, values are labels.

digits

Integer. Decimal places for continuous variables. Default 2.

pct_digits

Integer. Decimal places for percentages. Default 1.

test_type

Character. Statistical test: "auto" (default, t-test for continuous, chi-sq for binary/factor), "ttest", "wilcox", or "chisq".

caption

Character. Table caption. Default "Baseline Characteristics".

col_labels

Character vector of length 3. Column headers for overall, control, treated. Default c("Overall", "Control", "Treated").

Value

A data frame with columns:

variable

Variable label.

overall

Overall summary: mean (SD) for continuous, n (pct) for binary.

control

Control group summary.

treated

Treated group summary.

p_value

p-value for group difference.

smd

Standardized mean difference.

Examples

data(lalonde, package = "MatchIt")
covariate_summary(
  data      = lalonde,
  treatment = "treat",
  vars      = c("age", "educ", "re74", "re75", "married", "nodegree")
)
#>   variable           Overall           Control           Treated p_value    smd
#> 1      age      27.36 (9.88)     28.03 (10.79)      25.82 (7.16)  0.0029 -0.242
#> 2     educ      10.27 (2.63)      10.24 (2.86)      10.35 (2.01)  0.5848  0.045
#> 3     re74 4557.55 (6477.96) 5619.24 (6788.75) 2095.57 (4886.62)  0.0000 -0.596
#> 4     re75 2184.94 (3295.68) 2466.48 (3292.00) 1532.06 (3219.25)  0.0012 -0.287
#> 5  married       255 (41.5%)       220 (51.3%)        35 (18.9%)  0.0000 -0.721
#> 6 nodegree       387 (63.0%)       256 (59.7%)       131 (70.8%)  0.0087  0.235