## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup, message=FALSE----------------------------------------------------- library(xmap) library(dplyr) ## ----example-aus-agg-01-weights----------------------------------------------- aus_state_agg_links <- demo$aus_state_pairs |> mutate(ones = 1L) ## ----example-aus-agg-02-as-xmap----------------------------------------------- (agg_xmap <- aus_state_agg_links |> as_xmap_tbl(from = state, to = ctry, weight_by = ones) ) ## ----example-aus-agg-03-state-data-------------------------------------------- set.seed(1395) (aus_state_data <- demo$aus_state_pairs |> mutate( gdp = runif(n(), 100, 2000), ref = 100 )) ## ----example-aus-agg-04-apply-xmap-------------------------------------------- (aus_ctry_data <- aus_state_data |> apply_xmap( .xmap = agg_xmap, values_from = c(gdp, ref), keys_from = state ) ) ## ----example-aus-agg-05-no-coverage, error=TRUE------------------------------- ## dropping links agg_xmap[1:3, ] ## will lead to an error! apply_xmap( .data = aus_state_data, .xmap = agg_xmap[1:3, ], values_from = c(gdp, ref), keys_from = state ) ## ----------------------------------------------------------------------------- diagnose_apply_xmap( .data = aus_state_data, .xmap = agg_xmap[1:3, ], values_from = c(gdp, ref) ) ## ----error=TRUE--------------------------------------------------------------- # add some `NA` aus_state_data_na <- aus_state_data aus_state_data_na[c(1, 3, 5), "gdp"] <- NA apply_xmap( .data = aus_state_data_na, .xmap = agg_xmap, values_from = gdp, keys_from = state ) ## ----example-weights-01-equal------------------------------------------------- demo$aus_state_pairs |> group_by(ctry) |> mutate(equal = 1 / n_distinct(state)) |> ungroup() |> as_xmap_tbl(from = ctry, to = state, weight_by = equal) ## ----example-weights-02-invalid, error = TRUE--------------------------------- demo$aus_state_pairs |> mutate(ones = 1) |> as_xmap_tbl(from = ctry, to = state, weight_by = ones) ## ----example-weights-02-ref--------------------------------------------------- (split_xmap_pop <- demo$aus_state_pop_df |> group_by(ctry) |> mutate(pop_share = pop / sum(pop)) |> ungroup() |> as_xmap_tbl( from = ctry, to = state, weight_by = pop_share )) ## ----example-weights-03-apply-pop--------------------------------------------- aus_state_data2 <- aus_ctry_data |> mutate(ref = 10000) |> apply_xmap(split_xmap_pop, values_from = c(gdp, ref), keys_from = ctry ) ## ----echo=FALSE--------------------------------------------------------------- left_join( aus_state_data2, tidyr::unpack(split_xmap_pop, .to), join_by(state) ) |> select(.from, everything())