## ----------------------------------------------------------------------------- library(piar) # Make an aggregation structure. ms_weights[c("level1", "level2")] <- expand_classification(ms_weights$classification) pias <- ms_weights[c("level1", "level2", "business", "weight")] |> as_aggregation_structure() # Make elemental index with contributions. elementals <- ms_prices |> transform( relative = price_relative(price, period = period, product = product) ) |> elemental_index( relative ~ period + business, product = product, na.rm = TRUE, contrib = TRUE ) ## ----------------------------------------------------------------------------- contrib(elementals, level = "B1") ## ----------------------------------------------------------------------------- contrib2DF(elementals, level = "B1") ## ----------------------------------------------------------------------------- index <- aggregate(elementals, pias, na.rm = TRUE) contrib(index) ## ----------------------------------------------------------------------------- index <- as_index(as.matrix(index), contrib = TRUE) ## ----------------------------------------------------------------------------- set_contrib_from_index(index) |> aggregate(cut(pias, 2)) |> contrib() ## ----------------------------------------------------------------------------- chain(index) |> set_contrib_from_index() |> aggregate(cut(pias, 2)) |> contrib()