#' Get local DWB series
#'
#'
#' @description Join local DWB (old/imperical factors) by \code{species}, \code{PSYUB}, \code{ageRangeClass} and \code{FIZ}.
#' This function is the first part of \code{dwb_fct.sas}.
#'
#' @param species character, Tree basic species code, which is SP0 in VRI original data.
#' @param ageRangeClass character, The classified age range into 1 to 4. Output from \code{\link{ageRangeClassifier}}.
#' @param PSYUB character, Unique PSYU+PSYU_BLK code.
#' @param FIZ character, BC forest inventory zone.
#' @param source character, Series source, must one of \code{local}, \code{zonal} and \code{reversingZonal}.
#' \code{local} is based on species, PSYUB and ageRangeClass;
#' \code{zonal} is based on FIZ, species and ageRangeClass;
#' and \code{reversingZonal} is based on reversing FIZ zones, i.e.,
#' changing interior to coastal and changing coastal to interior.
#'
#'
#' @return DWB series, a two number character.
#'
#' @importFrom data.table ':='
#'
#' @export
#' @docType methods
#' @rdname getDWBSeries
#'
#' @author Yong Luo
#'
setGeneric("getDWBSeries",
function(species, ageRangeClass, PSYUB, FIZ, source) {
standardGeneric("getDWBSeries")
})
#' @rdname getDWBSeries
setMethod(
"getDWBSeries",
signature = c(species = "character",
ageRangeClass = "character",
PSYUB = "character",
FIZ = "character",
source = "character"),
definition = function(species, ageRangeClass, PSYUB, FIZ, source){
## get lookup tables
lookuptable <- DWBFactorLookupTable(source)
if(source == "local"){
temptable <- data.table(uniObs = 1:length(ageRangeClass),
species, PSYUB, ageRangeClass)
temptable <- merge(temptable, lookuptable, by = c("species", "PSYUB", "ageRangeClass"),
all.x = TRUE)
} else if(source == "zonal"){
temptable <- data.table(uniObs = 1:length(ageRangeClass),
species, FIZ, ageRangeClass)
temptable <- merge(temptable, lookuptable, by = c("species", "FIZ", "ageRangeClass"),
all.x = TRUE)
} else if(source == "reversingZonal"){
temptable <- data.table(uniObs = 1:length(ageRangeClass),
species, orgFIZ = FIZ, ageRangeClass)
temptable[orgFIZ <= "C", FIZ := "D"]
temptable[is.na(FIZ), FIZ := "C"]
temptable <- merge(temptable, lookuptable, by = c("species", "FIZ", "ageRangeClass"),
all.x = TRUE)
} else {
stop("Source is not among local, zonal and reversingZonal")
}
return(temptable[order(uniObs)]$series)
})
#' @export
#' @rdname getDWBSeries
setMethod(
"getDWBSeries",
signature = c(species = "character",
ageRangeClass = "character",
PSYUB = "character",
FIZ = "missing",
source = "character"),
definition = function(species, ageRangeClass, PSYUB, source){
if(source %in% c("zonal", "reversingZonal")){
stop("FIZ must be provided when using zonal or reversingZonal source")
} else if(source == "local"){
return(getDWBSeries(species, ageRangeClass, PSYUB, FIZ = as.character(NA), source))
}
})
#' @export
#' @rdname getDWBSeries
setMethod(
"getDWBSeries",
signature = c(species = "character",
ageRangeClass = "character",
PSYUB = "missing",
FIZ = "character",
source = "character"),
definition = function(species, ageRangeClass, FIZ, source){
if(source == "local"){
stop("PSYUB must be provided when using local source")
} else if(source %in% c("zonal", "reversingZonal")){
return(getDWBSeries(species, ageRangeClass, PSYUB = as.character(NA), FIZ, source))
}
})
DWBFactorLookupTable <- function(source){
if(source == "local"){
## adopted from Q:/RDW/RDW_Data1/Production/DWB_RF/dwb_usr.sas7bdat, need to change if this table is not
## correct or should be updated
lookuptable <- matrix(ncol = 4, byrow = TRUE,
data = c("B", "1090", "3", "92",
"B", "1160", "3", "91",
"B", "1170", "3", "91",
"B", "1180", "3", "92",
"B", "1190", "3", "92",
"B", "1200", "3", "92",
"B", "1210", "3", "92",
"B", "1220", "3", "92",
"B", "1320", "3", "93",
"B", "1330", "3", "93",
"B", "1340", "3", "93",
"B", "1350", "3", "91",
"B", "1490", "3", "91",
"B", "1510", "3", "92",
"B", "1520", "3", "92",
"B", "1530", "3", "92",
"B", "1560", "3", "97",
"B", "1691", "3", "96",
"B", "1692", "3", "95",
"B", "1693", "3", "94",
"B", "1740", "3", "92",
"B", "1760", "3", "92",
"B", "1790", "3", "99",
"B", "1880", "3", "91",
"B", "1931", "3", "99",
"B", "1932", "3", "98",
"B", "1933", "3", "99",
"B", "2430", "3", "91",
"B", "2510", "3", "92",
"B", "3010", "3", "96",
"C", "1090", "3", "98",
"C", "1120", "3", "94",
"C", "1130", "3", "95",
"C", "1150", "3", "94",
"C", "1190", "3", "96",
"C", "1220", "3", "98",
"C", "1250", "3", "93",
"C", "1280", "3", "91",
"C", "1290", "3", "91",
"C", "1320", "3", "13",
"C", "1330", "3", "13",
"C", "1410", "3", "98",
"C", "1460", "3", "95",
"C", "1500", "3", "94",
"C", "1510", "3", "96",
"C", "1530", "3", "96",
"C", "1580", "3", "97",
"C", "1600", "3", "91",
"C", "1710", "3", "95",
"C", "1740", "3", "96",
"C", "1750", "3", "92",
"C", "1760", "3", "96",
"C", "1830", "3", "97",
"C", "1840", "3", "92",
"C", "1870", "3", "94",
"C", "1950", "3", "99",
"C", "3060", "3", "99",
"C", "3230", "3", "91",
"C", "3250", "3", "96",
"C", "3470", "3", "99",
"C", "4721", "3", "94",
"F", "1100", "3", "98",
"F", "1110", "3", "98",
"F", "1230", "3", "99",
"F", "1400", "3", "99",
"F", "1410", "3", "99",
"F", "1420", "3", "99",
"F", "1430", "3", "99",
"F", "1440", "3", "98",
"F", "1810", "3", "98",
"F", "1820", "3", "98",
"F", "1870", "3", "98",
"F", "2510", "3", "99",
"F", "2610", "3", "98",
"F", "4721", "3", "98",
"F", "4722", "3", "98",
"H", "1090", "3", "90",
"H", "1120", "3", "85",
"H", "1130", "3", "87",
"H", "1150", "3", "85",
"H", "1190", "3", "90",
"H", "1200", "3", "90",
"H", "1210", "3", "90",
"H", "1220", "3", "90",
"H", "1250", "3", "89",
"H", "1280", "3", "84",
"H", "1290", "3", "84",
"H", "1320", "3", "12",
"H", "1330", "3", "12",
"H", "1460", "3", "87",
"H", "1500", "3", "85",
"H", "1510", "3", "90",
"H", "1530", "3", "90",
"H", "1560", "3", "97",
"H", "1580", "3", "88",
"H", "1600", "3", "84",
"H", "1691", "3", "94",
"H", "1692", "3", "93",
"H", "1693", "3", "92",
"H", "1710", "3", "87",
"H", "1720", "3", "91",
"H", "1740", "3", "90",
"H", "1750", "3", "86",
"H", "1760", "3", "90",
"H", "1790", "3", "99",
"H", "1830", "3", "88",
"H", "1840", "3", "86",
"H", "1870", "3", "85",
"H", "1900", "3", "91",
"H", "1931", "3", "99",
"H", "1932", "3", "95",
"H", "1933", "3", "99",
"H", "1950", "3", "98",
"H", "1960", "3", "96",
"H", "3060", "3", "98",
"H", "3190", "3", "96",
"H", "3230", "3", "84",
"H", "3470", "3", "98",
"H", "4721", "3", "85",
"PL", "1400", "2", "98",
"PL", "1470", "2", "98",
"PL", "1240", "3", "97",
"PL", "1400", "3", "99",
"PL", "1470", "3", "99",
"S", "1090", "3", "98",
"S", "1160", "3", "97",
"S", "1170", "3", "97",
"S", "1180", "3", "98",
"S", "1190", "3", "98",
"S", "1200", "3", "98",
"S", "1210", "3", "98",
"S", "1220", "3", "98",
"S", "1240", "3", "95",
"S", "1320", "3", "99",
"S", "1330", "3", "99",
"S", "1340", "3", "99",
"S", "1350", "3", "97",
"S", "1490", "3", "97",
"S", "1510", "3", "98",
"S", "1520", "3", "98",
"S", "1530", "3", "98",
"S", "1740", "3", "98",
"S", "1760", "3", "98",
"S", "1880", "3", "97",
"S", "1890", "3", "96",
"S", "2430", "3", "97",
"S", "2510", "3", "98"))
lookuptable <- as.data.table(lookuptable)
names(lookuptable) <- c("species", "PSYUB", "ageRangeClass", "series")
} else if (source %in% c("zonal", "reversingZonal")){
## adopted from Q:/RDW/RDW_Data1/Production/DWB_RF/dwb_fsr.sas7bdat, need to change if this table is not
## correct or should be updated
lookuptable <- matrix(ncol = 4, byrow = TRUE,
data = c( "AC", "A", "1", "01",
"AC", "A", "2", "02",
"AC", "A", "3", "10",
"AT", "A", "1", "01",
"AT", "A", "2", "02",
"AT", "A", "3", "10",
"B", "A", "1", "01",
"B", "A", "2", "02",
"B", "A", "3", "10",
"C", "A", "1", "01",
"C", "A", "2", "02",
"C", "A", "3", "10",
"D", "A", "1", "01",
"D", "A", "2", "02",
"D", "A", "3", "10",
"E", "A", "1", "01",
"E", "A", "2", "02",
"E", "A", "3", "10",
"F", "A", "1", "01",
"F", "A", "2", "02",
"F", "A", "3", "10",
"H", "A", "1", "01",
"H", "A", "2", "02",
"H", "A", "3", "10",
"MB", "A", "1", "01",
"MB", "A", "2", "02",
"MB", "A", "3", "10",
"PA", "A", "1", "01",
"PA", "A", "2", "02",
"PA", "A", "3", "10",
"PL", "A", "1", "01",
"PL", "A", "2", "02",
"PL", "A", "3", "10",
"PW", "A", "1", "01",
"PW", "A", "2", "02",
"PW", "A", "3", "10",
"S", "A", "1", "01",
"S", "A", "2", "02",
"S", "A", "3", "10",
"Y", "A", "1", "01",
"Y", "A", "2", "02",
"Y", "A", "3", "10",
"AC", "B", "1", "01",
"AC", "B", "2", "02",
"AC", "B", "3", "10",
"AT", "B", "1", "01",
"AT", "B", "2", "02",
"AT", "B", "3", "10",
"B", "B", "1", "01",
"B", "B", "2", "02",
"B", "B", "3", "11",
"C", "B", "1", "01",
"C", "B", "2", "02",
"C", "B", "3", "11",
"D", "B", "1", "01",
"D", "B", "2", "02",
"D", "B", "3", "10",
"E", "B", "1", "01",
"E", "B", "2", "02",
"E", "B", "3", "10",
"F", "B", "1", "01",
"F", "B", "2", "02",
"F", "B", "3", "10",
"H", "B", "1", "01",
"H", "B", "2", "02",
"H", "B", "3", "14",
"MB", "B", "1", "01",
"MB", "B", "2", "02",
"MB", "B", "3", "10",
"PA", "B", "1", "01",
"PA", "B", "2", "02",
"PA", "B", "3", "10",
"PL", "B", "1", "01",
"PL", "B", "2", "02",
"PL", "B", "3", "10",
"PW", "B", "1", "01",
"PW", "B", "2", "02",
"PW", "B", "3", "10",
"S", "B", "1", "01",
"S", "B", "2", "02",
"S", "B", "3", "10",
"Y", "B", "1", "01",
"Y", "B", "2", "02",
"Y", "B", "3", "10",
"AC", "C", "1", "01",
"AC", "C", "2", "02",
"AC", "C", "3", "10",
"AT", "C", "1", "01",
"AT", "C", "2", "02",
"AT", "C", "3", "10",
"B", "C", "1", "01",
"B", "C", "2", "02",
"B", "C", "3", "11",
"C", "C", "1", "01",
"C", "C", "2", "02",
"C", "C", "3", "12",
"D", "C", "1", "01",
"D", "C", "2", "02",
"D", "C", "3", "10",
"E", "C", "1", "01",
"E", "C", "2", "02",
"E", "C", "3", "10",
"F", "C", "1", "01",
"F", "C", "2", "02",
"F", "C", "3", "11",
"H", "C", "1", "01",
"H", "C", "2", "02",
"H", "C", "3", "11",
"MB", "C", "1", "01",
"MB", "C", "2", "02",
"MB", "C", "3", "10",
"PA", "C", "1", "01",
"PA", "C", "2", "02",
"PA", "C", "3", "10",
"PL", "C", "1", "01",
"PL", "C", "2", "02",
"PL", "C", "3", "10",
"PW", "C", "1", "01",
"PW", "C", "2", "02",
"PW", "C", "3", "10",
"PY", "C", "1", "01",
"PY", "C", "2", "02",
"PY", "C", "3", "10",
"S", "C", "1", "01",
"S", "C", "2", "02",
"S", "C", "3", "10",
"Y", "C", "1", "01",
"Y", "C", "2", "02",
"Y", "C", "3", "10",
"AC", "D", "1", "01",
"AC", "D", "2", "02",
"AC", "D", "3", "11",
"AT", "D", "1", "01",
"AT", "D", "2", "02",
"AT", "D", "3", "10",
"B", "D", "1", "05",
"B", "D", "2", "06",
"B", "D", "3", "14",
"C", "D", "1", "03",
"C", "D", "2", "04",
"C", "D", "3", "14",
"E", "D", "1", "01",
"E", "D", "2", "02",
"E", "D", "3", "11",
"F", "D", "1", "03",
"F", "D", "2", "04",
"F", "D", "3", "12",
"H", "D", "1", "03",
"H", "D", "2", "04",
"H", "D", "3", "13",
"L", "D", "1", "01",
"L", "D", "2", "02",
"L", "D", "3", "10",
"PA", "D", "1", "03",
"PA", "D", "2", "04",
"PA", "D", "3", "11",
"PL", "D", "1", "01",
"PL", "D", "2", "04",
"PL", "D", "3", "13",
"PW", "D", "1", "03",
"PW", "D", "2", "04",
"PW", "D", "3", "11",
"PY", "D", "1", "01",
"PY", "D", "2", "02",
"PY", "D", "3", "10",
"S", "D", "1", "03",
"S", "D", "2", "04",
"S", "D", "3", "12",
"Y", "D", "1", "01",
"Y", "D", "2", "02",
"Y", "D", "3", "10",
"AC", "E", "1", "01",
"AC", "E", "2", "02",
"AC", "E", "3", "11",
"AT", "E", "1", "01",
"AT", "E", "2", "02",
"AT", "E", "3", "10",
"B", "E", "1", "05",
"B", "E", "2", "06",
"B", "E", "3", "14",
"C", "E", "1", "03",
"C", "E", "2", "04",
"C", "E", "3", "14",
"E", "E", "1", "01",
"E", "E", "2", "02",
"E", "E", "3", "11",
"F", "E", "1", "03",
"F", "E", "2", "04",
"F", "E", "3", "13",
"H", "E", "1", "03",
"H", "E", "2", "04",
"H", "E", "3", "13",
"L", "E", "1", "01",
"L", "E", "2", "02",
"L", "E", "3", "10",
"PA", "E", "1", "03",
"PA", "E", "2", "04",
"PA", "E", "3", "11",
"PL", "E", "1", "01",
"PL", "E", "2", "04",
"PL", "E", "3", "13",
"PW", "E", "1", "03",
"PW", "E", "2", "04",
"PW", "E", "3", "11",
"PY", "E", "1", "01",
"PY", "E", "2", "02",
"PY", "E", "3", "10",
"S", "E", "1", "03",
"S", "E", "2", "04",
"S", "E", "3", "12",
"Y", "E", "1", "01",
"Y", "E", "2", "02",
"Y", "E", "3", "10",
"AC", "F", "1", "01",
"AC", "F", "2", "02",
"AC", "F", "3", "11",
"AT", "F", "1", "01",
"AT", "F", "2", "02",
"AT", "F", "3", "10",
"B", "F", "1", "05",
"B", "F", "2", "06",
"B", "F", "3", "14",
"C", "F", "1", "03",
"C", "F", "2", "04",
"C", "F", "3", "14",
"E", "F", "1", "01",
"E", "F", "2", "02",
"E", "F", "3", "11",
"F", "F", "1", "03",
"F", "F", "2", "04",
"F", "F", "3", "13",
"H", "F", "1", "03",
"H", "F", "2", "04",
"H", "F", "3", "13",
"L", "F", "1", "01",
"L", "F", "2", "02",
"L", "F", "3", "10",
"PA", "F", "1", "03",
"PA", "F", "2", "04",
"PA", "F", "3", "11",
"PL", "F", "1", "01",
"PL", "F", "2", "04",
"PL", "F", "3", "13",
"PW", "F", "1", "03",
"PW", "F", "2", "04",
"PW", "F", "3", "11",
"PY", "F", "1", "01",
"PY", "F", "2", "02",
"PY", "F", "3", "10",
"S", "F", "1", "03",
"S", "F", "2", "04",
"S", "F", "3", "12",
"AC", "G", "1", "01",
"AC", "G", "2", "02",
"AC", "G", "3", "11",
"AT", "G", "1", "01",
"AT", "G", "2", "02",
"AT", "G", "3", "10",
"B", "G", "1", "05",
"B", "G", "2", "06",
"B", "G", "3", "14",
"C", "G", "1", "03",
"C", "G", "2", "04",
"C", "G", "3", "14",
"E", "G", "1", "01",
"E", "G", "2", "02",
"E", "G", "3", "11",
"F", "G", "1", "03",
"F", "G", "2", "04",
"F", "G", "3", "13",
"H", "G", "1", "03",
"H", "G", "2", "04",
"H", "G", "3", "13",
"L", "G", "1", "01",
"L", "G", "2", "02",
"L", "G", "3", "10",
"PA", "G", "1", "03",
"PA", "G", "2", "04",
"PA", "G", "3", "11",
"PL", "G", "1", "01",
"PL", "G", "2", "03",
"PL", "G", "3", "12",
"PW", "G", "1", "03",
"PW", "G", "2", "04",
"PW", "G", "3", "11",
"PY", "G", "1", "01",
"PY", "G", "2", "02",
"PY", "G", "3", "10",
"S", "G", "1", "03",
"S", "G", "2", "04",
"S", "G", "3", "12",
"Y", "G", "1", "01",
"Y", "G", "2", "02",
"Y", "G", "3", "10",
"AC", "H", "1", "01",
"AC", "H", "2", "02",
"AC", "H", "3", "11",
"AT", "H", "1", "01",
"AT", "H", "2", "02",
"AT", "H", "3", "10",
"B", "H", "1", "05",
"B", "H", "2", "06",
"B", "H", "3", "13",
"C", "H", "1", "03",
"C", "H", "2", "04",
"C", "H", "3", "14",
"E", "H", "1", "01",
"E", "H", "2", "02",
"E", "H", "3", "11",
"F", "H", "1", "03",
"F", "H", "2", "04",
"F", "H", "3", "12",
"H", "H", "1", "03",
"H", "H", "2", "04",
"H", "H", "3", "13",
"L", "H", "1", "01",
"L", "H", "2", "02",
"L", "H", "3", "10",
"PA", "H", "1", "03",
"PA", "H", "2", "04",
"PA", "H", "3", "11",
"PL", "H", "1", "01",
"PL", "H", "2", "03",
"PL", "H", "3", "12",
"PW", "H", "1", "03",
"PW", "H", "2", "04",
"PW", "H", "3", "11",
"S", "H", "1", "03",
"S", "H", "2", "04",
"S", "H", "3", "11",
"AC", "I", "1", "01",
"AC", "I", "2", "02",
"AC", "I", "3", "11",
"AT", "I", "1", "01",
"AT", "I", "2", "02",
"AT", "I", "3", "10",
"B", "I", "1", "05",
"B", "I", "2", "06",
"B", "I", "3", "13",
"C", "I", "1", "03",
"C", "I", "2", "04",
"C", "I", "3", "14",
"E", "I", "1", "01",
"E", "I", "2", "02",
"E", "I", "3", "11",
"F", "I", "1", "03",
"F", "I", "2", "04",
"F", "I", "3", "14",
"H", "I", "1", "03",
"H", "I", "2", "04",
"H", "I", "3", "13",
"L", "I", "1", "01",
"L", "I", "2", "02",
"L", "I", "3", "10",
"PA", "I", "1", "03",
"PA", "I", "2", "04",
"PA", "I", "3", "11",
"PL", "I", "1", "01",
"PL", "I", "2", "03",
"PL", "I", "3", "12",
"S", "I", "1", "03",
"S", "I", "2", "04",
"S", "I", "3", "11",
"AC", "J", "1", "01",
"AC", "J", "2", "02",
"AC", "J", "3", "11",
"AT", "J", "1", "01",
"AT", "J", "2", "02",
"AT", "J", "3", "10",
"B", "J", "1", "03",
"B", "J", "2", "04",
"B", "J", "3", "12",
"C", "J", "1", "03",
"C", "J", "2", "04",
"C", "J", "3", "13",
"D", "J", "1", "01",
"D", "J", "2", "02",
"D", "J", "3", "10",
"E", "J", "1", "01",
"E", "J", "2", "02",
"E", "J", "3", "11",
"H", "J", "1", "03",
"H", "J", "2", "04",
"H", "J", "3", "12",
"PA", "J", "1", "03",
"PA", "J", "2", "04",
"PA", "J", "3", "11",
"PL", "J", "1", "01",
"PL", "J", "2", "03",
"PL", "J", "3", "11",
"S", "J", "1", "03",
"S", "J", "2", "04",
"S", "J", "3", "13",
"Y", "J", "1", "01",
"Y", "J", "2", "02",
"Y", "J", "3", "10",
"AC", "K", "1", "03",
"AC", "K", "2", "04",
"AC", "K", "3", "12",
"AC", "K", "4", "13",
"AT", "K", "1", "04",
"AT", "K", "2", "03",
"AT", "K", "3", "11",
"AT", "K", "4", "12",
"B", "K", "1", "05",
"B", "K", "2", "06",
"B", "K", "3", "13",
"D", "K", "1", "01",
"D", "K", "2", "02",
"D", "K", "3", "10",
"E", "K", "1", "01",
"E", "K", "2", "02",
"E", "K", "3", "11",
"H", "K", "1", "03",
"H", "K", "2", "04",
"H", "K", "3", "12",
"L", "K", "1", "01",
"L", "K", "2", "02",
"L", "K", "3", "10",
"PL", "K", "1", "01",
"PL", "K", "2", "03",
"PL", "K", "3", "12",
"S", "K", "1", "03",
"S", "K", "2", "04",
"S", "K", "3", "11",
"AC", "L", "1", "03",
"AC", "L", "2", "04",
"AC", "L", "3", "12",
"AC", "L", "4", "13",
"AT", "L", "1", "04",
"AT", "L", "2", "03",
"AT", "L", "3", "11",
"AT", "L", "4", "12",
"B", "L", "1", "05",
"B", "L", "2", "06",
"B", "L", "3", "13",
"E", "L", "1", "01",
"E", "L", "2", "02",
"E", "L", "3", "11",
"L", "L", "1", "01",
"L", "L", "2", "02",
"L", "L", "3", "10",
"PL", "L", "1", "01",
"PL", "L", "2", "03",
"PL", "L", "3", "12",
"S", "L", "1", "03",
"S", "L", "2", "04",
"S", "L", "3", "11"))
lookuptable <- as.data.table(lookuptable)
names(lookuptable) <- c("species", "FIZ", "ageRangeClass", "series")
}
return(lookuptable)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.