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")

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
før jeg sender df til statgl henter jeg min df med pivot_wider