Skip to content

col diff i statgl::crosstable / statgl::table #35

@larpSTATGL

Description

@larpSTATGL

Kunne dette være en kandidat til statgl ... somewhere

i mine tabeller vil jeg ofte også vise forskel mellem 2 af tabellens kolonner, enten diff, pct, index eller ratio. fremfor at gentage en masse beregninger har jeg lavet en lille helper:

den tager en kolonne og sætter i forhold til en anden kolonne og så bestemmer type, hvilken beregning som skal gøres

calc_col_change <- function(data, numerator, denominator, new_col = NULL,
                            type = c("pct", "diff", "index", "ratio"),
                            digits = 1) {
  type <- match.arg(type)
  stopifnot(is.data.frame(data))
  if (!numerator   %in% names(data)) stop("Numerator '",   numerator,   "' missing.")
  if (!denominator %in% names(data)) stop("Denominator '", denominator, "' missing.")
  if (is.null(new_col)) new_col <- paste0(type, "_", numerator, "_vs_", denominator)
  num <- data[[numerator]]; den <- data[[denominator]]
  result <- switch(type,
                   "pct"   = (num - den) / den * 100,
                   "diff"  =  num - den,
                   "index" =  num / den * 100,
                   "ratio" =  num / den)
  if (!is.null(digits)) result <- round(result, digits)
  data |> dplyr::mutate(!!new_col := result)
}

før jeg sender df til statgl henter jeg min df med pivot_wider

# dette er ikke det kørende eksempel 
changes <- tab1_raw |>
  select(district, district_text, time, value) |>
  pivot_wider(names_from = time, values_from = value) |>
  calc_col_change(numerator, denominator, new_col1, type = "pct") |>
  calc_col_change(numerator, denominator,  new_col2,  type = "pct") |>
  select(district, district_text, all_of(c(new_col1, new_col2))) |>
  pivot_longer(cols = -c(district, district_text),
               names_to = "quarter_head", values_to = "value") 

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions