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

## ----setup--------------------------------------------------------------------
library(tsg)

## -----------------------------------------------------------------------------
head(person_record)

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(sex)

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(sex, age, marital_status)

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(
    marital_status,
    top_n = 3
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(
    marital_status, 
    top_n      = 3,
    top_n_only = TRUE
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(age, sort_value = FALSE)

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(
    sex, 
    age, 
    marital_status, 
    sort_except = "age"   # keep age in its natural order
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(employed, include_na = TRUE)  # default

person_record |>
  generate_frequency(employed, include_na = FALSE)

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(
    seeing,
    hearing,
    walking,
    remembering,
    self_caring,
    communicating, 
    collapse_list = TRUE
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_frequency(
    sex, 
    add_cumulative         = TRUE, 
    add_cumulative_percent = TRUE 
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_crosstab(marital_status, sex)

## -----------------------------------------------------------------------------
person_record |>
  generate_crosstab(
    marital_status,
    sex,
    percent_by_column = TRUE
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_crosstab(
    sex,
    seeing,
    hearing,
    walking,
    remembering,
    self_caring,
    communicating
  )

## -----------------------------------------------------------------------------
person_record |>
  generate_crosstab(
    marital_status,
    sex,
    position_total = "top"
  )

## -----------------------------------------------------------------------------
person_record |>
  dplyr::group_by(sex) |>
  generate_frequency(marital_status)

## -----------------------------------------------------------------------------
person_record |>
  dplyr::group_by(sex) |>
  generate_crosstab(marital_status, employed)

## ----eval=FALSE---------------------------------------------------------------
# person_record |>
#   generate_frequency(sex) |>
#   write_xlsx(path = "table-sex.xlsx")

## ----eval=FALSE---------------------------------------------------------------
# person_record |>
#   generate_crosstab(marital_status, sex) |>
#   add_table_title("Marital Status by Sex") |>
#   add_table_subtitle("National Sample Survey, 2024") |>
#   add_source_note("Source: person_record dataset.") |>
#   add_footnote("Missing values are excluded from the denominator.") |>
#   write_xlsx(path = "table-marital-sex.xlsx")

## ----eval=FALSE---------------------------------------------------------------
# person_record |>
#   generate_frequency(sex) |>
#   write_xlsx(
#     path   = "table-sex-styled.xlsx",
#     facade = get_tsg_facade("yolo")
#   )

## ----eval=FALSE---------------------------------------------------------------
# tbl <- person_record |>
#   generate_crosstab(marital_status, sex) |>
#   add_table_title("Marital Status by Sex") |>
#   add_source_note("Source: person_record dataset")
# 
# write_xlsx(tbl, path = "table.xlsx")   # Excel
# write_html(tbl, path = "table.html")   # HTML  (requires the gt package)
# write_pdf(tbl,  path = "table.pdf")    # PDF   (requires gt + webshot2)
# write_docx(tbl, path = "table.docx")  # Word  (requires officer + flextable)

