## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = TRUE)

## ----load---------------------------------------------------------------------
library(gtstats)

## ----data---------------------------------------------------------------------
dat <- data.frame(
  arm = factor(c("Control", "Control", "Treatment", "Treatment", "Treatment")),
  age = c(45, NA, 51, 62, 57),
  smoker = factor(c("No", "Yes", NA, "Yes", "No")),
  follow_up = c(12, 10, 8, NA, 11)
)

to_flextable(describe_data(dat))

## ----descriptive--------------------------------------------------------------
summary_table(
  dat,
  by = arm,
  include = smoker,
  percent = "column",
  missing = "ifany"
) |> to_flextable()

to_flextable(summary_table(dat, by = arm, include = smoker, percent = "row"))
to_flextable(summary_table(dat, by = arm, include = smoker, percent = "overall"))
to_flextable(summary_table(dat, by = arm, include = smoker, categorical = "n"))

## ----missing-as-category------------------------------------------------------
catheter_data <- data.frame(
  catheter = factor(
    c(rep("Yes", 32), rep(NA_character_, 68)),
    levels = c("No", "Yes")
  )
)

summary_table(
  catheter_data,
  include = catheter,
  missing = "as_category"
) |> to_flextable()

## ----proportion---------------------------------------------------------------
smoking <- proportion_stats(dat, smoker, by = arm, level = "Yes")
to_flextable(smoking)
denominators_stats(smoking)

## ----rate---------------------------------------------------------------------
rate_dat <- data.frame(
  arm = c("Control", "Control", "Treatment", "Treatment"),
  events = c(1, 0, 2, 1),
  person_years = c(1.2, NA, 0.8, 1.0)
)

rate <- rate_stats(rate_dat, event = events, time = person_years, by = arm)
denominators_stats(rate)

## ----crosstab-----------------------------------------------------------------
cross <- crosstabs(dat, row = arm, col = smoker)
denominators_stats(cross)

## ----comparison---------------------------------------------------------------
comparison <- compare_groups(dat, variable = age, group = arm)
denominators_stats(comparison)

## ----correlation--------------------------------------------------------------
cor_dat <- data.frame(
  age = c(34, 41, 45, 49, 53, 57, 62, 68),
  follow_up = c(12, 11, NA, 9, 8, 7, 6, 5)
)
to_flextable(correlation(cor_dat, x = age, y = follow_up))

## ----distribution-------------------------------------------------------------
dist_dat <- data.frame(
  arm = factor(rep(c("Control", "Treatment"), each = 8)),
  age = c(34, 39, 44, 48, 52, 57, NA, 63,
          36, 41, 46, 51, 56, 61, 66, Inf)
)
to_flextable(assess_distribution(dist_dat, vars = age, by = arm))

## ----variance-----------------------------------------------------------------
to_flextable(assess_variance(dist_dat, vars = age, by = arm))

