Learn R Programming

piar (version 0.8.2)

as.matrix.piar_aggregation_structure: Coerce an aggregation structure into a tabular form

Description

Coerce a price index aggregation structure into an aggregation matrix, or a data frame.

Usage

# S3 method for piar_aggregation_structure
as.matrix(x, ..., sparse = FALSE)

# S3 method for piar_aggregation_structure as.data.frame(x, row.names = NULL, optional = FALSE, ...)

Value

as.matrix() represents an aggregation structure as a matrix, such that multiplying with a (column) vector of elemental indexes gives the aggregated index.

as.data.frame() takes an aggregation structure and returns a data frame that could have generated it.

Arguments

x

A price index aggregation structure, as made by aggregation_structure().

...

Not currently used for the matrix method. Extra arguments to as.data.frame.list() for the data frame method.

sparse

Should the result be a sparse matrix from Matrix? This is faster for large aggregation structures. The default returns an ordinary dense matrix.

row.names

See as.data.frame().

optional

Not currently used.

See Also

as_aggregation_structure() for coercing into an aggregation structure.

treemap::treemap() and data.tree::as.Node() for visualizing an aggregation structure.

Other aggregation structure methods: cut.piar_aggregation_structure(), levels.piar_aggregation_structure(), update.piar_aggregation_structure(), weights.piar_aggregation_structure()

Examples

Run this code
# A simple aggregation structure
#            1
#      |-----+-----|
#      11          12
#  |---+---|       |
#  111     112     121
#  (1)     (3)     (4)

aggregation_weights <- data.frame(
  level1 = c("1", "1", "1"),
  level2 = c("11", "11", "12"),
  ea     = c("111", "112", "121"),
  weight = c(1, 3, 4)
)

pias <- as_aggregation_structure(aggregation_weights)

as.matrix(pias)

all.equal(as.data.frame(pias), aggregation_weights)

if (FALSE) {
# Visualize as a treemap.
treemap::treemap(
  aggregation_weights,
  index = names(aggregation_weights)[-4],
  vSize = "weight",
  title = "aggregation structure"   
)

# Or turn into a more genereal tree object and plot.
aggregation_weights$pathString <- do.call(
  \(...) paste(..., sep = "/"),
  aggregation_weights[-4]
)
plot(data.tree::as.Node(aggregation_weights))
}

Run the code above in your browser using DataLab