% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/expand_classification.R
\name{expand_classification}
\alias{expand_classification}
\alias{interact_classifications}
\title{Expand a hierarchical classification}
\usage{
expand_classification(x, width = 1L, pad = NA)

interact_classifications(..., sep = ":")
}
\arguments{
\item{x}{\verb{[character]} A character vector, or something that can be coerced
into one, of
codes/labels for a specific level in a classification (e.g., 5-digit
COICOP, 5-digit NAICS, 4-digit SIC).}

\item{width}{\verb{[integer > 0]} An integer vector that gives the width of each
digit in
\code{x}. A single value is recycled to span the longest element in
\code{x}. This cannot contain NAs. The default assumes each digit has a
width of 1, as in the NAICS, NAPCS, and SIC classifications.}

\item{pad}{\verb{[character(1)]} A string used to pad the shorter labels for an
unbalanced classification. The default pads with NA.}

\item{...}{\verb{[list]} Lists of character vectors that give the codes/labels for
each
level of the classification, ordered so that moving down the list goes down
the hierarchy (as made by \code{expand_classification()}).}

\item{sep}{\verb{[character(1)]} A character used to combine codes/labels across
elements of \code{...}. The default uses \code{":"}.}
}
\value{
\code{expand_classification()} returns a list with a entry for each level
in \code{x} giving the "digits" that represent each level in the hierarchy.

\code{interact_classfications()} returns a list of lists with the same structure
as \code{expand_classification()}.
}
\description{
Expand a character representation of a hierarchical classification to make a
price index aggregation structure. Expanded classifications be interacted
together to get all combinations of aggregation structures.
}
\examples{
# A simple classification structure.
#            1
#      |-----+-----|
#      11          12
#  |---+---|       |
#  111     112     121

expand_classification(c("111", "112", "121"))

# Expanding more complex classifications:
# ... if last 'digit' is either TA or TS.
expand_classification(
  c("111TA", "112TA", "121TS"),
  width = c(1, 1, 1, 2)
)

# ... if first 'digit' is either 11 or 12.
expand_classification(c("111", "112", "121"), width = c(2, 1))

# ...if there are delimiters in the classification (like COICOP).
expand_classification(c("01.1.1", "01.1.2", "01.2.1"), width = 2)
}
\seealso{
\code{\link[=aggregation_structure]{aggregation_structure()}} to make a price-index aggregation structure.

\code{\link[=split_classification]{split_classification()}} to expand a classification by splitting along
a delimiter.

\code{\link[=combine_classifications]{combine_classifications()}} for combining multiple hierarchical
classifications.

\code{csh_from_digits()} in the \pkg{accumulate} package for different handling
of unbalanced classifications.
}
