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

## ----setup, message = FALSE---------------------------------------------------
library(gtregression)
library(dplyr)

data("data_birthwt", package = "gtregression")

bw <- data_birthwt |>
  mutate(
    smoke = factor(smoke, levels = c(0, 1), labels = c("Non-smoker", "Smoker")),
    low = factor(low, levels = c(0, 1), labels = c("Normal BW", "Low BW")),
    race = factor(race, levels = c(1, 2, 3), labels = c("White", "Black", "Other"))
  )

attr(bw$smoke, "label") <- "Smoking in pregnancy"
attr(bw$low, "label") <- "Low birth weight"

## ----crude--------------------------------------------------------------------
rd <- risk_difference(
  bw,
  outcome = low,
  exposure = smoke,
  event = "Low BW",
  reference = "Non-smoker",
  format = "flextable"
)

rd$table

## ----body---------------------------------------------------------------------
rd$table_body

## ----reference----------------------------------------------------------------
rd_swapped <- risk_difference(bw, outcome = low, exposure = smoke,
                              event = "Low BW", reference = "Smoker",
                              format = "flextable")

rd_swapped$table

## ----nnt----------------------------------------------------------------------
rd_nnt <- risk_difference(bw, outcome = low, exposure = smoke,
                          event = "Low BW", reference = "Non-smoker",
                          event_type = "harmful",
                          format = "flextable")

rd_nnt$table

## ----nnt-infinity-------------------------------------------------------------
bw$visit <- factor(bw$ftv > 0, levels = c(FALSE, TRUE),
                   labels = c("No visit", "Visit"))

rd_visit <- risk_difference(bw, outcome = low, exposure = visit,
                            event = "Low BW", reference = "No visit",
                            event_type = "harmful",
                            format = "flextable")

rd_visit$table

## ----adjusted-----------------------------------------------------------------
rd_adjusted <- risk_difference(bw, outcome = low, exposure = smoke,
                               event = "Low BW", reference = "Non-smoker",
                               adjust_for = c(age, lwt, race),
                               event_type = "harmful",
                               format = "flextable")

rd_adjusted$table

## ----level--------------------------------------------------------------------
rd_90 <- risk_difference(bw, outcome = low, exposure = smoke,
                         event = "Low BW", reference = "Non-smoker",
                         conf_level = 0.90,
                         format = "flextable")

rd_90$table

## ----polish-------------------------------------------------------------------
rd_final <- risk_difference(bw, outcome = low, exposure = smoke,
                            event = "Low BW", reference = "Non-smoker",
                            event_type = "harmful", format = "flextable") |>
  modify_table(
    level_labels = list(smoke = c(Smoker = "Current smoker")),
    caption = "Table 3. Absolute risk of low birth weight by smoking",
    caveat = "Observational data; differences may reflect confounding."
  )

rd_final$table

## ----save, eval = FALSE-------------------------------------------------------
# save_table(rd_final, filename = "risk-difference", format = "docx")

