Skip to contents

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

Usage

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

# S3 method for class 'piar_aggregation_structure'
as.data.frame(x, ..., stringsAsFactors = FALSE)

Arguments

x

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

...

Not currently used.

sparse

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

stringsAsFactors

See as.data.frame().

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, with columns level1, level2, ..., ea, and weight.

See also

Examples

# 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)
#>      111   112 121
#> 1  0.125 0.375 0.5
#> 11 0.250 0.750 0.0
#> 12 0.000 0.000 1.0

all.equal(as.data.frame(pias), aggregation_weights)
#> [1] TRUE