## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## ----setup--------------------------------------------------------------------
library(nestedscales)

## ----build--------------------------------------------------------------------
industries <- data.frame(
  section  = c("C", "C", "C", "D", "D"),
  division = c("C10", "C10", "C11", "D35", "D35"),
  class    = c("C101", "C102", "C110", "D351", "D352"),
  gva      = c(120, 80, 45, 300, 150)
)

ind <- scale_from_leaftable(
  industries,
  frames = c("section", "division", "class"),
  name   = "nace"
)
ind

## ----accessors----------------------------------------------------------------
scale_frames(ind)
scale_units(ind, "division")
scale_key(ind)
scale_weights(ind)

## ----structure----------------------------------------------------------------
scale_nests(ind, "section", "division")
scale_family(ind, "section", "division")

## ----recast-up----------------------------------------------------------------
x <- data.frame(
  class = c("C101", "C102", "C110", "D351", "D352"),
  jobs  = c(12, 8, 5, 30, 20),
  wage  = c(31, 29, 27, 45, 40)
)

recast_scale(x, ind,
  source = "class", target = "section",
  rule = c(jobs = "sum", wage = "weighted_mean")
)

## ----recast-down--------------------------------------------------------------
y <- data.frame(section = c("C", "D"), investment = c(100, 400))

recast_scale(y, ind, source = "section", target = "class", rule = "sum")

## ----join---------------------------------------------------------------------
join_scale(x, ind, frame = "class", attach = TRUE)

## ----subset-------------------------------------------------------------------
manufacturing <- filter_scale(ind, "section", "C")
scale_units(manufacturing)
scale_coverage(manufacturing)

scale_frames(prune_scale(ind, "division"))

## ----attributes---------------------------------------------------------------
carriers <- read_scale("carriers")
lhv <- scale_attributes(carriers, "lhv", frame = "fuel")
head(lhv[!is.na(lhv$value), c("unit", "value", "unit_of_measure")])

fuel_use <- data.frame(fuel = c("Lignite", "NaturalGas"), t = c(1000, 1000))
convert_scale(fuel_use, carriers, "lhv", from_unit = "t", to_unit = "GJ")

scale_match(carriers, c("GAS", "lignite", "Hydrogen"))

## ----definition---------------------------------------------------------------
path <- file.path(tempdir(), "nace.json")
write_scale(ind, path)
scale_frames(read_scale(path))
scale_catalog()[c("id", "name", "frames", "n_atoms", "package")]

## ----definition-cleanup, include = FALSE--------------------------------------
unlink(path)

## ----product------------------------------------------------------------------
p <- scale_product(a = scale_example(), b = scale_example2())
product_size(p)

