R/packageData.R

#' Package Data
#'
#' Package National Accounts data sources
#'
#' This function prepares R data files for packaging. It is primarily intended to maintain data sources from National Accounts (in million USD). For example, \code{sou="BTD"} and \code{isic=3} will generate the data set \code{DATA.BTDi3} in the specified \code{rdata} file.
#'
#' @param file the exported \code{rdata} file.
#' @param list a character vector of National Accounts data source IDs.
#' @param isic an integer specifying the ISIC classification of data sources.
#' @param namecou a character vector of 3-digit ISO country codes read from column \sQuote{cou}.
#' @param namepar a character vector of 3-digit ISO partner codes read from column \sQuote{par}.
#' @param namevar a character vector of variables read from column \sQuote{var}.
#' @param nameeuc a character vector of end-use codes read from column \sQuote{euc}.
#' @param nameind a character vector of industries read from column \sQuote{ind} or from \sQuote{dim.ind} if specified.
#' @param nameyear and integer vector specifying the selected period.
#' @param replace specify if the existing data shall be replaced.
#' @param sqlite specify if the data shall be stored as SQLite database.
#'
#' @author OECD STAN
#' @keywords package
#' @seealso \code{\link{queryData}}, \code{\link{addDatalist}}
#' @export
#' @examples
#' ## create for stanapp:
#' sourcesSTANNAi3 <- c('UNSDSNA2013', 'ICIO052013', 'WIOT042012', 'STAN', 'BTD')
#' packageData(list=sourcesSTANNAi3,
#'             namecou = unique(c(union(STAN.COU, STAN.COUKPC), "BGR", "BRN", "CYP", "HKG", "KHM", "LKA", "LTU", "LVA", "MLT", "MYS", "ROU", "SAU", "SGP", "THA", "VNM")),
#'             namevar = union(STAN.VARALL, c("FDDE", "FGGE", "FHHE", "GCFI", "INVC", "GDPR")),
#'             isic = 3,
#'             file = file.path(PATH.REPO, "stanData\\data\\STANNAi3.rda"),
#'             replace = TRUE)
#'
#' ## include or update sources, keeping existing sources in file:
#' packageData(list = c("ICIO052013"),
#'             namecou = unique(c(union(STAN.COU, STAN.COUKPC), "BGR", "BRN", "CYP", "HKG", "KHM", "LKA", "LTU", "LVA", "MLT", "MYS", "ROU", "SAU", "SGP", "THA", "VNM")),
#'             namevar = union(STAN.VARALL, c("FDDE", "FGGE", "FHHE", "GCFI", "INVC", "GDPR")),
#'             isic = 3,
#'             file = file.path(PATH.REPO, "stanData\\data\\STANNAi3.rda"),
#'             replace = FALSE)
#'
#' ## create for icioapp:
#' packageData(list = c("ICIOVB2013"),
#'             isic = 3,
#'             nameyear=c(1995:2009),
#'             file = file.path(PATH.REPO, "icioData\\data\\STANICIOi3.rda"),
#'             replace = TRUE)

packageData <- function(list=c("STAN", "BTD"),
                        isic=4,
                        file="data.rda",
                        namecou=character(),
                        namepar=character(),
                        namevar=character(),
                        nameeuc=character(),
                        nameind=character(),
                        nameyear=character(),
                        replace=FALSE,
                        sqlite=FALSE,
                        ## convertcurrency=FALSE,
                        ...)
{

    if (replace==FALSE & sqlite==FALSE) {
        env <- new.env()
        load(file, envir = env)
        list.exist <- ls(env)
        ## do not reload existing items that are in list
        list.exist <- list.exist[!list.exist%in%paste0('DATA.', list)]
        ## remove contents of list from memory
        load(file)
        rm(list=paste0('DATA.', list))
        ## if (!setequal(paste0("DATA.", list), ls(env))) {
        ##     list <- union(list, sub("DATA.", "", ls(env))) # modify: currently re-loads
        ##     load(file)
        ## }
    }
    if (sqlite==TRUE) library(RSQLite)
    require(RJSDMX)
    require(RODBC)
    require(reshape2)
    require(dplyr)
    require(stanData); data(STANNAi0) # USD exchange rates - see isic==0

    if (isic==3 & length(nameind)==0) {
        nameind=STANi3.INDALL
    } else if (isic==4 & length(nameind)==0) {
        nameind=STANi4.INDALL
    }

    if (isic==0) {

        if ("CONVCUR"%in%list) {


            ## ##################################### ##
            ##  from UNSD Main Aggregates (implied)  ##
            ## ##################################### ##

            ## loadfile <- file.path(PATH.SASi3, "DATA_in", "UN", "UNSD_SNA", "DATA.UNSDEXCH.rda")
            ## use function stanData/R/transUNSDSNA.R
            DATA.UNSDEXCH <- transUNSDSNA(xrates=TRUE, download=TRUE, year.min=1970)
            ## save(DATA.UNSDEXCH, file = loadfile)

            ## subset(STAN.COUEN, cou=="CZE")
            ##
            ## [DATA.UNSDEXCH$cou=='CZE',]
            ## test <- subset(DATA.UNSDEXCH, cou=="CZE")
            ## test[order(test$year),]

            ## load(file = loadfile)

            DATA.UNSDEXCH <- subset(DATA.UNSDEXCH, cou%in%namecou & var%in%namevar)
            ## DATA.XRATES <- subset(DATA.XRATES, select = c("cou", "var", "ind", "year", "value"))

            ## backward compatibility
            DATA.XRATES <- DATA.UNSDEXCH

            ## ## not used:
            ## DATA.CONVCUR <- list()
            ## DATA.CONVCUR$UNSDMA <- DATA.UNSDEXCH

            ##
            list <- c(list, "XRATES")
            ## save(list = c("DATA.CONVCUR", "DATA.XRATES"), file = file.path(PATH.REPO, "stanData", "data", "STANNAi0.rda"))
            ## list <- c(list, "XRATES")
            ## ############## ##
            ##  from IMF IFS  ##
            ## ############## ##
            ## IMF: this provider was removed (same as ISTAT)
            ## Yes, it was SOAP based and I'm redeveloping it for using REST. Unfortunately ISTAT has only the SOAP interface but I want to discontinue it...

            ## ############### ##
            ##  from OECD SNA  ##
            ## ############### ##
            ## see "XRATES" in ISIC Rev. 4 section below and previous method at end of file
            ## load(file.path(PATH.SASi4,"DATA_in", "SNA", "SNA_PPEX.rda"))
            ## DATA.XRATES <- DATA.SNAPPEX

            ## ## ############## ##
            ## ##  from ECB EXR  ##
            ## ## ############## ##
            ## provider <- "ECB"
            ## ## getFlows(provider)
            ## flow <- "EXR"
            ## query.freq <- "A"
            ## query.exr_type <- "SP00"
            ## query.exr_suffix <- "A"
            ## ## #############################
            ## ## get NAC to EUR exchange rates
            ## ## #############################
            ## TScodes.cur <- names(getCodes(provider, flow, "CURRENCY"))
            ## conv.cur <- merge(subset(STAN.COUCUR, cou%in%namecou), data.frame(cur = TScodes.cur))
            ## query.currency <- gsub(", ", "+", toString(union(unique(conv.cur$cur), "USD")))
            ## query.currency_denom <- "EUR"

            ## NAC2EUR<- getSDMX(provider, paste0(paste(flow,
            ##                                          query.freq,
            ##                                          query.currency,
            ##                                          query.currency_denom,
            ##                                          query.exr_type,
            ##                                          query.exr_suffix,
            ##                                          sep = '.')), start = "1970")
            ## ##
            ## NAC2EUR <- sdmxTS2DF(SDMXTS = NAC2EUR, provider = provider, timevar = "year", numeric = TRUE)
            ## NAC2EUR <- merge(NAC2EUR, subset(NAC2EUR, CURRENCY=="USD"), by = names(NAC2EUR)[!names(NAC2EUR)%in%c("CURRENCY", "value")])
            ## NAC2EUR$value <- NAC2EUR$value.x / NAC2EUR$value.y
            ## NAC2EUR <- NAC2EUR[!is.na(NAC2EUR$value),]
            ## NAC2EUR <- merge(NAC2EUR, subset(STAN.COUCUR, cou%in%namecou), by.x = "CURRENCY.x", by.y = "cur")
            ## NAC2EUR$var <- "EXCH"
            ## NAC2EUR <- subset(NAC2EUR, select = c("var", "cou", "year", "value"))
            ## NAC2EUR <- NAC2EUR[order(NAC2EUR$cou, NAC2EUR$year),]

            ## ##
            ## names(SDMXTS) <- sub("LOCATION", "cou", names(SDMXTS))
            ## names(SDMXTS) <- sub("TRANSACT", "var", names(SDMXTS))
            ## SDMXTS$var[SDMXTS$var=="EXC"] <- "EXCH"
            ## SDMXTS$var[SDMXTS$var=="PPPGDP"] <- "PPPS"
            ## SDMXTS <- SDMXTS[!is.na(SDMXTS$value),]
            ## ##
            ## DATA.XRATES <- subset(SDMXTS, select = c("var", "cou", "year", "value"))
            ## DATA.XRATES <- subset(DATA.XRATES, cou%in%namecou & var%in%namevar)

            ## ####################################### ##
            ## TODO:                                   ##
            ## combine ECB and OECD SNA exchange rates ##
            ## ####################################### ##

        }

    }

    if (isic==3) {

        if ("BTDi3"%in%list) { # STAN BTD ISIC Rev. 3L categ "Total" and partner "WOR" in USD
            techind <- c("HITECH",
                         "MHTECH",
                         "MLTECH",
                         "LOTECH",
                         "HMHTECH",
                         "ICTMAN",
                         "ICTSER",
                         "ENERGYP",
                         "NONMAN")
            nameindBTDi3 <- nameind[!nameind%in%techind]
            nameindBTDi3 <- substr(as.character(nameindBTDi3), 2, nchar(as.character(nameindBTDi3)))
            nameindBTDi3 <- c(nameindBTDi3, intersect(nameind, techind))
            DATA.BTDi3 <- queryData(connection=SQL.STANBTD,
                                  table="BTDIxEi3",
                                  namecou=namecou,
                                  dim.ind="BTD",
                                  nameind=nameindBTDi3,
                                  isic=isic,
                                  add.where=" AND par = 'WOR' AND categ = 'TOTAL'")
            DATA.BTDi3$ind[!DATA.BTDi3$BTD%in%techind] <- paste0("C", DATA.BTDi3$BTD[!DATA.BTDi3$BTD%in%techind])
            DATA.BTDi3$ind[DATA.BTDi3$BTD%in%techind] <- as.character(DATA.BTDi3$BTD[DATA.BTDi3$BTD%in%techind])
            DATA.BTDi3$ind <- as.factor(DATA.BTDi3$ind)
            DATA.BTDi3 <- subset(DATA.BTDi3, select=c("cou", "var", "ind", "year", "value"))
            DATA.BTDi3 <- subset(DATA.BTDi3, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("BTDIXEi3"%in%list) { # BTDIxE ISIC Rev. 3 : PAR and EUC dimesion
            ## tables <- sqlTables(SQL.STANBTD)$TABLE_NAME
            ## h(tables[substr(tables, 1, 3)=="BTD"])
            techind <- c("HITECH",
                         "MHTECH",
                         "MLTECH",
                         "LOTECH",
                         "HMHTECH",
                         "ICTMAN",
                         "ICTSER",
                         "ENERGYP",
                         "NONMAN")
            nameindBTDIXEi3 <- nameind[!nameind%in%techind]
            nameindBTDIXEi3 <- substr(as.character(nameindBTDIXEi3), 2, nchar(as.character(nameindBTDIXEi3)))
            nameindBTDIXEi3 <- c(nameindBTDIXEi3, intersect(nameind, techind))
            DATA.BTDIXEi3 <- queryData(
                connection=SQL.STANBTD,
                table="BTDIXEi3",
                namecou=namecou,
                dim.ind="BTD",
                nameind=nameindBTDIXEi3,
                isic=isic) # , add.where=" AND par = 'WOR'")
            DATA.BTDIXEi3$ind[!DATA.BTDIXEi3$BTD%in%techind] <- paste0("C", DATA.BTDIXEi3$BTD[!DATA.BTDIXEi3$BTD%in%techind])
            DATA.BTDIXEi3$ind[DATA.BTDIXEi3$BTD%in%techind] <- as.character(DATA.BTDIXEi3$BTD[DATA.BTDIXEi3$BTD%in%techind])
            DATA.BTDIXEi3$ind <- as.factor(DATA.BTDIXEi3$ind)
            names(DATA.BTDIXEi3) <- sub("CATEG", "euc", names(DATA.BTDIXEi3))
            DATA.BTDIXEi3 <- subset(DATA.BTDIXEi3, select=c("cou", "par", "var", "euc", "ind", "year", "value"))
            if (length(namecou)!=0) DATA.BTDIXEi3 <- DATA.BTDIXEi3[DATA.BTDIXEi3$cou%in%namecou,]
            if (length(namepar)!=0) DATA.BTDIXEi3 <- DATA.BTDIXEi3[DATA.BTDIXEi3$par%in%namepar,]
            if (length(namevar)!=0) DATA.BTDIXEi3 <- DATA.BTDIXEi3[DATA.BTDIXEi3$var%in%namevar,]
            if (length(nameeuc)!=0) DATA.BTDIXEi3 <- DATA.BTDIXEi3[DATA.BTDIXEi3$euc%in%nameeuc,]
            DATA.BTDIXEi3 <- subset(DATA.BTDIXEi3, ind%in%nameind)
        }

        if ("EUNAIOR1"%in%list) { # converted information from Eurostat SUTs in NACE Rev. 1
            ## source("http://oecdshare.oecd.org/sti/eas/stan/STAN_R/1_load_EUNAIOR1.R")
            load(file.path(PATH.SASi3, "DATA_in", "NAIO", "nace_r1", "EUNAIOR1.rda"))
            DATA.EUNAIOR1 <- subset(DATA.EUNAIOR1, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("EUNAMAR1"%in%list) {
            ## require(stanData)
            ## transEUNAMA(isic = 3, download = FALSE, year.min = 1970)
            load(file.path(PATH.SASi3, "DATA_in", "NAMA", "EUNAMAR1.rda"))
            ## unique(DATA.EUNAMAR1$cou)
            ## apply USD exchange rates
            DATA.EUNAMAR1 <- merge(DATA.EUNAMAR1, DATA.XRATES[DATA.XRATES$var=="EXCH",], by = c("cou", "year"))
            names(DATA.EUNAMAR1) <-  sub("var.x", "var", names(DATA.EUNAMAR1))
            names(DATA.EUNAMAR1) <-  sub("value.x", "value", names(DATA.EUNAMAR1))
            DATA.EUNAMAR1$value[DATA.EUNAMAR1$var%in%STAN.VAR[["MON"]]] <- DATA.EUNAMAR1$value[DATA.EUNAMAR1$var%in%STAN.VAR[["MON"]]] / DATA.EUNAMAR1$value.y[DATA.EUNAMAR1$var%in%STAN.VAR[["MON"]]]
            DATA.EUNAMAR1 <- subset(DATA.EUNAMAR1, select = c("cou", "var", "ind", "year", "value"))
            DATA.EUNAMAR1 <- subset(DATA.EUNAMAR1, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("ICIO052013"%in%list) {     # ICIO May 2013
            load(file.path(PATH.SASi3, "DATA_in", "ICIO1305", "ICIOmay2013 18 ind.rdata"))
            DATA.ICIO052013 <- temp
            load(file.path(PATH.SASi3, "DATA_in", "ICIO1305", "ICIOmay2013 37 ind.rdata"))
            DATA.ICIO052013 <- rbind(DATA.ICIO052013, temp)
            ## DATA.ICIO052013 <- matrix(temp[64:length(temp)], ncol = 5, byrow = TRUE)
            ## DATA.ICIO052013 <- data.frame(DATA.ICIO052013)
            names(DATA.ICIO052013) <- c("cou", "var", "ind", "year", "value")
            DATA.ICIO052013 <- DATA.ICIO052013[!duplicated(DATA.ICIO052013),]
            DATA.ICIO052013$ind <- paste0("C", DATA.ICIO052013$ind)
            ## DATA.ICIO052013 <- DATA.ICIO052013[!DATA.ICIO052013$cou==1,]
            ## DATA.ICIO052013$ind <- sub("C75T95", "C75T99", DATA.ICIO052013$ind)
            ## DATA.ICIO052013$year <- as.integer(as.character(DATA.ICIO052013$year))
            ## DATA.ICIO052013$value <- as.numeric(as.character(DATA.ICIO052013$value))
            DATA.ICIO052013.d <- dcast(DATA.ICIO052013, cou + var + year ~ ind, value.var="value")
            DATA.ICIO052013.d <- indAggregate(data = DATA.ICIO052013.d, isic = 3)
            DATA.ICIO052013 <- melt(DATA.ICIO052013.d, id.vars=c("cou", "var", "year"), variable.name="ind")
            DATA.ICIO052013 <- subset(DATA.ICIO052013, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("ICIO5837VB"%in%list) { # ICIO 58 countries, 37 industries
            source(file.path(dbpath, "GitHub", "icioData", "data-raw", "requested_indic_024tim-wiod.R"))
            icioyear <- c(1995, 2000, 2005, 2008, 2009)
            years <- intersect(nameyear, icioyear)
            ncou <- 58
            nind <- 37
            DATA.ICIO5837VB <- array(0, dim=c(ncou * nind, ncou * nind, length(years)))
            DATA.ICIO5837EB <- array(0, dim=c(ncou * nind, ncou * nind, length(years)))
            DATA.ICIO5837FDTTLWITHDISC <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO5837HHCP <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO5837GFCF <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO5837GRTR <- array(0, dim=c(ncou * nind, ncou, length(years)))
            for (yr in seq(along=years))
            {
                load(file.path(tempdir(), "results_", years[yr], ".rda"))
                DATA.ICIO5837VB[,,yr] <- vB
                DATA.ICIO5837EB[,,yr] <- eB
                DATA.ICIO5837FDTTLWITHDISC[,,yr] <- fd_ttl_withDISC
                DATA.ICIO5837HHCP[,,yr] <- hhcp
                DATA.ICIO5837GFCF[,,yr] <- gfcf
                DATA.ICIO5837GRTR[,,yr] <- grtr
            }
            list <- c(list, "ICIO5837EB", "ICIO5837FDTTLWITHDISC", "ICIO5837HHCP", "ICIO5837GFCF", "ICIO5837GRTR")
        }

        if ("ICIO6234VB"%in%list) { # ICIO 62 countries, 34 industries
            source(file.path(dbpath, "GitHub", "icioData", "data-raw", "transICIO6234APP.R"))
            ## icioyear <- c(1995:2011)
            ## length(icioyear)
            ## years <- intersect(nameyear, icioyear)
            DATA.ICIO6234VB <- vB
            DATA.ICIO6234EB <- DATA.ICIO6234VB  # replace later

            ## DATA.ICIO6234GRTR <- grtr[c(1:(dim(grtr)[1]-1)), c(1:dim(grtr)[2]-1),]  # remove "Total" from dimension 1 and 2
            DATA.ICIO6234GRTR <- grtr[, , c(1:dim(grtr)[3]-1)]  # remove "DISC" from dimension 3
            DATA.ICIO6234FDTTLWITHDISC <- DATA.ICIO6234GRTR  # replace later
            DATA.ICIO6234HHCP <- DATA.ICIO6234GRTR  # replace later
            DATA.ICIO6234GFCF <- DATA.ICIO6234GRTR  # replace later

            list <- c(list, "ICIO6234EB", "ICIO6234FDTTLWITHDISC", "ICIO6234HHCP", "ICIO6234GFCF", "ICIO6234GRTR")
            ## list <- c(list, "ICIO6234GRTR")
        }

        if ("ICIO6137VB"%in%list) { # ICIO 61 countries, 37 industries
            ## dir.create(file.path(tempdir(), "results"))
            ## takes about one hour
            source(file.path(dbpath, "GitHub", "icioapp61", "1212io-indic61_add_gfcf_hhcp.R"))
            ## temppath <- "D:\\icio_vB_23_01_2013"
            icioyear <- c(1995, 2000, 2005, 2008, 2009)
            years <- intersect(nameyear, icioyear)
            ncou <- 61
            nind <- 37
            DATA.ICIO6137VB <- array(0, dim=c(ncou * nind, ncou * nind, length(years)))
            DATA.ICIO6137EB <- array(0, dim=c(ncou * nind, ncou * nind, length(years)))
            DATA.ICIO6137FDTTLWITHDISC <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO6137HHCP <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO6137GFCF <- array(0, dim=c(ncou * nind, ncou, length(years)))
            DATA.ICIO6137GRTR <- array(0, dim=c(ncou * nind, ncou, length(years)))
            for (yr in seq(along=years))
            {
                load(file.path(tempdir(), "results_", years[yr], ".rda"))
                ## load(file.path(temppath, "\\results_", years[yr], ".rda"))
                DATA.ICIO6137VB[,,yr] <- vB
                DATA.ICIO6137EB[,,yr] <- eB
                DATA.ICIO6137FDTTLWITHDISC[,,yr] <- fd_ttl_withDISC
                DATA.ICIO6137HHCP[,,yr] <- hhcp
                DATA.ICIO6137GFCF[,,yr] <- gfcf
                DATA.ICIO6137GRTR[,,yr] <- grtr61
            }
            list <- c(list, "ICIO6137EB", "ICIO6137FDTTLWITHDISC", "ICIO6137HHCP", "ICIO6137GFCF", "ICIO6137GRTR")
        }

        if ("INDSTAT32"%in%list) { # UNIDO Indstat ISIC Rev. 3 2-digit
            ## require(stanData)
            ## transINDSTAT(isic = 3, detail = 2, path = file.path(PATH.SASi3, "DATA_in", "UNIDO", "INDSTAT_2_2012"), year.min = 1970)
            load(file.path(PATH.SASi3, "DATA_in", "UNIDO", "INDSTAT32.rda"))
            ## DATA.INDSTAT32.d <- dcast(DATA.INDSTAT32, cou + var + year ~ ind, value.var="value")
            ## DATA.INDSTAT32.d <- indAggregate(data = DATA.INDSTAT32.d, isic = 3)
            ## DATA.INDSTAT32 <- melt(DATA.INDSTAT32.d, id.vars=c("cou", "var", "year"), variable.name="ind")
            DATA.INDSTAT32 <- subset(DATA.INDSTAT32, year >= 1970)
            DATA.INDSTAT32 <- subset(DATA.INDSTAT32, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("NSONAPATCHi3"%in%list) { # collected information from NSOs in USD, combined with UNSDSNA for VA
            ## see section "combine all swn.csv files in NSONAPATCH" of file J:\STAN07\COU\master.R
            load(file.path(PATH.SASi3, "DATA_out", "NSONAPATCHi3.rda"))
            DATA.NSONAPATCHi3 <- subset(DATA.NSONAPATCHi3, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        ## non-SQL sources
        ## source(file.path(PATH.STAN, "1_load_OECDSUT.R"))
        if ("OECDSUT112013"%in%list) { # OECD Annual SUT [DATA.OECDSUT112013]
            ## source("http://oecdshare.oecd.org/sti/eas/stan/STAN_R/1_load_OECDSUT.R")
            load(file.path(PATH.SASi3,"DATA_in", "OECDSUT", "OECDSUT112013.rda"))
            DATA.OECDSUT112013 <- subset(DATA.OECDSUT112013, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("STANi3"%in%list) {           # STAN ISIC Rev. 3 in USD
            DATA.STANi3 <- queryData(connection=SQL.STAN,
                                   namecou=namecou,
                                   table="STANPUB",
                                   isic=isic)[,-6]
            DATA.STANi3 <- DATA.STANi3[!DATA.STANi3$var%in%c("EXPO", "IMPO"),]
            ## apply USD exchange rates from SNA Table 4
            load(file.path(PATH.SASi4,"DATA_in", "SNA", "SNA_PPEX.rda"))
            DATA.STANi3 <- merge(DATA.STANi3, DATA.SNAPPEX[DATA.SNAPPEX$var=="EXCH",], by = c("cou", "year"))
            names(DATA.STANi3) <-  sub("var.x", "var", names(DATA.STANi3))
            names(DATA.STANi3) <-  sub("value.x", "value", names(DATA.STANi3))
            DATA.STANi3$value[DATA.STANi3$var%in%STAN.VARMON] <- DATA.STANi3$value[DATA.STANi3$var%in%STAN.VARMON] / DATA.STANi3$value.y[DATA.STANi3$var%in%STAN.VARMON]
            DATA.STANi3 <- subset(DATA.STANi3, select = c("cou", "var", "ind", "year", "value"))
            DATA.STANi3 <- subset(DATA.STANi3, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("STDSNAi3"%in%list) {
            ## require(stanData)
            ## transSTDSNA(channel = SQL.SNA, isic = 4, year.min = 1970)
            load(file.path(PATH.SASi3, "DATA_in", "SNA", "STDSNAi3.rda"))
            DATA.STDSNAi3 <- convertCurrency(data=DATA.STDSNAi3, datacur=DATA.XRATES[DATA.XRATES$var=="EXCH",])
            DATA.STDSNAi3 <- subset(DATA.STDSNAi3, select = c("cou", "var", "ind", "year", "value"))
            DATA.STDSNAi3 <- subset(DATA.STDSNAi3, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("UNDATA203100"%in%list) {   # UN Data platform, table 203
            load(file.path(PATH.SASi3, "DATA_in", "UN", "UNSD_MADT", "UNDATA203.rda")) # in USD
            DATA.UNDATA203 <- subset(DATA.UNDATA203, cou%in%namecou & var%in%namevar & ind%in%nameind)
            DATA.UNDATA203100 <- DATA.UNDATA203[DATA.UNDATA203$series==100,!colnames(DATA.UNDATA203)=="series"]
            DATA.UNDATA203150 <- DATA.UNDATA203[DATA.UNDATA203$series==150,!colnames(DATA.UNDATA203)=="series"]
            DATA.UNDATA203200 <- DATA.UNDATA203[DATA.UNDATA203$series==200,!colnames(DATA.UNDATA203)=="series"]
            DATA.UNDATA203300 <- DATA.UNDATA203[DATA.UNDATA203$series==300,!colnames(DATA.UNDATA203)=="series"]
            DATA.UNDATA203400 <- DATA.UNDATA203[DATA.UNDATA203$series==400,!colnames(DATA.UNDATA203)=="series"]
            DATA.UNDATA203500 <- DATA.UNDATA203[DATA.UNDATA203$series==500,!colnames(DATA.UNDATA203)=="series"]
            list <- c(list, "UNDATA203150", "UNDATA203200", "UNDATA203300", "UNDATA203400", "UNDATA203500")
        }

        if ("UNDATA203CON"%in%list) { # UN Data platform, table 203, connecting all series
            ## source(file.path(PATH.STAN, "1_load_UNSD_UNData.R"))
            load(file.path(PATH.SASi3, "DATA_in", "UN", "UNSD_MADT", "UNDATA203CON.rda")) # in USD
            DATA.UNDATA203CON <- subset(DATA.UNDATA203CON, cou%in%namecou & var%in%namevar & ind%in%nameind)
            list <- c(list, "UNDATA203CON")
        }

        if ("UNSDSNA2013"%in%list) {    # UN National Accounts 2013
            load(file.path(PATH.SASi3, "DATA_in", "UN", "UNSD_SNA", "UNSDSNA2013.rda"))
            DATA.UNSDSNA2013 <- subset(DATA.UNSD.SNA, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("WIOD"%in%list) { # WIOD Socio-economic accounts [DATA.WIOD.SEA]
            load(file.path(PATH.SASi3, "DATA_in", "WIOD", "SEA.rda"))
            DATA.WIOD <- subset(DATA.WIOD.SEA, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("WIOT042012"%in%list) {     # WIOT tables [wiotapr2012]
            load(file.path(PATH.SASi3, "DATA_in", "WIOD", "WIOTapr2012.rda"))

            DATA.WIOT042012 <- wiotapr2012
            names(DATA.WIOT042012) <- c("cou", "var", "code", "year", "value")
            DATA.WIOT042012$code <- sub("Total", "TOT", DATA.WIOT042012$code)
            ## STAN industry codes
            convind <- read.csv(file.path(PATH.SASi3, "DATA_in", "WIOD", "WIOD_ind.csv"))
            DATA.WIOT042012 <- merge(DATA.WIOT042012, convind, by.x = "code", by.y = "WIOD")
            DATA.WIOT042012 <- DATA.WIOT042012[,-1]
            ## STAN industry aggregates
            DATA.WIOT042012 <- DATA.WIOT042012[!DATA.WIOT042012$ind=="CTOTAL",] # issues with CTOTAL: two values per year
            DATA.WIOT042012 <- DATA.WIOT042012[!DATA.WIOT042012$var=="TBAL",] # empty values
            data <- dcast(DATA.WIOT042012, cou + var + year ~ ind, value.var="value")
            data.agg <- indAggregate(data=data, isic=3)
            DATA.WIOT042012 <- melt(data.agg, id.vars=c("cou", "var", "year"), variable.name="ind")
            DATA.WIOT042012 <- subset(DATA.WIOT042012, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("WIOT112013"%in%list) {     # WIOT tables [wiotnov2013]
            load(file.path(PATH.SASi3, "DATA_in", "WIOD", "WIOTnov2013.rda"))
            DATA.WIOT112013 <- wiod_nov2013
            names(DATA.WIOT112013) <- c("cou", "var", "code", "year", "value")
            DATA.WIOT112013$code <- sub("Total", "TOT", DATA.WIOT112013$code)
            ## STAN industry codes
            convind <- read.csv(file.path(PATH.SASi3, "DATA_in", "WIOD", "WIOD_ind.csv"))
            DATA.WIOT112013 <- merge(DATA.WIOT112013, convind, by.x = "code", by.y = "WIOD")
            DATA.WIOT112013 <- DATA.WIOT112013[,-1]
            ## STAN industry aggregates
            ## CTOTAL only in VALU, PROD
            ## unique(DATA.WIOT112013$ind[DATA.WIOT112013$var=="VALU"])
            ## unique(DATA.WIOT112013$ind[DATA.WIOT112013$var=="EXPO"])
            ## data <- DATA.WIOT112013[DATA.WIOT112013$var%in%c("VALU", "PROD"),]
            data <- DATA.WIOT112013
            data <- data[!data$ind=="CTOTAL",] # issues with CTOTAL : two values per year
            data <- data[!data$var=="TBAL",] # empty values
            data.d <- dcast(data, cou + var + year ~ ind, value.var="value")
            data.agg <- indAggregate(data=data.d, isic=3)
            data.agg.m <- melt(data.agg, id.vars=c("cou", "var", "year"), variable.name="ind")
            ## DATA.WIOT112013 <- rbind(data.agg.m, wiod_nov2013[wiod_nov2013$var%in%c("EXPO", "IMPO"),])
            DATA.WIOT112013 <- data.agg.m
            DATA.WIOT112013 <- subset(DATA.WIOT112013, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

    } else if (isic==4)
    {

        ## if ("XRATES"%in%list) {

        ##     ## using RJSDMX
        ##     ## namecou <- namecou[1:3]
        ##     ## http://stats.oecd.org/Index.aspx?DataSetCode=SNA_TABLE4
        ##     provider <- "OECD"
        ##     getFlows(provider)
        ##     flow <- "SNA_TABLE4"
        ##     ##
        ##     TScodes.cou <- names(getCodes(provider, flow, "LOCATION"))
        ##     namecou <- namecou[namecou%in%TScodes.cou]
        ##     query.cou <- gsub(", ", "+", toString(namecou))
        ##     ##
        ##     query.var <- gsub(", ", "+", toString(namevar[namevar%in%c("EXCH", "PPPS")]))
        ##     query.var <- sub("EXCH", "EXC", query.var)
        ##     query.var <- sub("PPPS", "PPPGDP", query.var)
        ##     ##
        ##     SDMXTS <- getSDMX(provider, paste0(paste(flow, query.cou, query.var, 'CD.A', sep = '.')), start = "1970")
        ##     ##
        ##     SDMXTS <- sdmxTS2DF(
        ##         SDMXTS
        ##         ,
        ##         provider
        ##         ,
        ##         timevar = "year"
        ##         ,
        ##         numeric = TRUE
        ##         )
        ##     ##
        ##     names(SDMXTS) <- sub("LOCATION", "cou", names(SDMXTS))
        ##     names(SDMXTS) <- sub("TRANSACT", "var", names(SDMXTS))
        ##     SDMXTS$var[SDMXTS$var=="EXC"] <- "EXCH"
        ##     SDMXTS$var[SDMXTS$var=="PPPGDP"] <- "PPPS"
        ##     SDMXTS <- SDMXTS[!is.na(SDMXTS$value),]
        ##     ##
        ##     DATA.XRATES <- subset(SDMXTS, select = c("var", "cou", "year", "value"))
        ##     DATA.XRATES <- subset(DATA.XRATES, cou%in%namecou & var%in%namevar)

        ## }

        if ("ANBERDi4"%in%list) {         # ANBERD ISIC Rev. 4 in USD
            DATA.ANBERDi4 <- sqlQuery(SQL.STAN, "SELECT * FROM ANBERD_REV4_PUB")
            ## DATA.ANBERDi4 <- sqlQuery(SQL.STAN, "SELECT * FROM ANBERD_WORK_REV4 WHERE NOT sou = 'QUEST_PF'")
            X <- strsplit(as.character(DATA.ANBERDi4$cou), "_")
            DATA.ANBERDi4$cou <- sapply(X, "[[", 1)
            DATA.ANBERDi4$type <- sapply(X, "[[", 2)
            DATA.ANBERDi4 <- rbind(DATA.ANBERDi4[DATA.ANBERDi4$type=="MA",],
                                 DATA.ANBERDi4[DATA.ANBERDi4$type!="MA",])
            DATA.ANBERDi4 <- DATA.ANBERDi4[!duplicated(DATA.ANBERDi4[,colnames(DATA.ANBERDi4)%in%c("cou", "ind", "year")]),]
            ## DATA.ANBERDi4$var[DATA.ANBERDi4$type=="MA"] <- "RDNC"
            DATA.ANBERDi4$var <- "RDNC"
            ## DATA.ANBERDi4 <- DATA.ANBERDi4[, colnames(DATA.ANBERDi4)!="type"]
            DATA.ANBERDi4 <- subset(DATA.ANBERDi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("BTDi4"%in%list) {            # BTDIxE ISIC Rev. 4 in USD
            DATA.BTDi4 <- queryData(connection=SQL.STANBTD,
                                   table="BTDIxEi4",
                                   dim.ind="BTD",
                                   isic=isic,
                                   add.where=" AND par = 'WOR' AND categ = 'TOTAL'")
            names(DATA.BTDi4) <- sub("BTD", "ind", names(DATA.BTDi4))
            DATA.BTDi4 <- subset(DATA.BTDi4, select=c("cou", "var", "ind", "year", "value"))
            DATA.BTDi4 <- subset(DATA.BTDi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("EUNAMAR2"%in%list) {
            ## source(dbpath, "GitHub", "stanData", "data-raw", "transEUNAMA.R")
            ## transEUNAMA(isic = 4, download = FALSE, year.min = 1970)
            load(file.path(PATH.SASi4, "DATA_in", "NAMA", "EUNAMAR2.rda"))
            ## DATA.XRATES[DATA.XRATES$cou=='CZE',]
            ## STAN.COUEN[STAN.COUEN$cou=='CZE',]
            ## nrow(subset(DATA.EUNAMAR2, year > 2011))
            ## nrow(subset(DATA.XRATES, year > 2010))
            DATA.EUNAMAR2 <- DATA.EUNAMAR2[!(DATA.EUNAMAR2$cou=="IRL" & DATA.EUNAMAR2$var=="PROD" & DATA.EUNAMAR2$ind=="DTOTAL"),] # See email CW Mon 20-Oct-2014 6:45 PM
            ## h(DATA.XRATES)
            DATA.EUNAMAR2 <- merge(DATA.EUNAMAR2, DATA.XRATES[DATA.XRATES$var=="EXCH",], by = c("cou", "year"))
            names(DATA.EUNAMAR2) <-  sub("var.x", "var", names(DATA.EUNAMAR2))
            names(DATA.EUNAMAR2) <-  sub("value.x", "value", names(DATA.EUNAMAR2))
            DATA.EUNAMAR2$value[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]] <- DATA.EUNAMAR2$value[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]] / DATA.EUNAMAR2$value.y[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]]
            DATA.EUNAMAR2 <- subset(DATA.EUNAMAR2, select = c("cou", "var", "ind", "year", "value"))
            DATA.EUNAMAR2 <- subset(DATA.EUNAMAR2, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("EUNAMA10R2"%in%list) {

            ## ## source(file.path(dbpath, "GitHub", "stanData", "data-raw", "transEUNAMA.R"))
            ## ## library(stanData)
            ## ## data(STANNAi4)
            ## ## max(DATA.EUNAMA10R2$year) # 2013
            ## DATA.EUNAMA10R2 <- stanData::transEUNAMA10(download = TRUE, year.min = 1970)
            ## ## h(DATA.EUNAMA10R2)
            ## save(DATA.EUNAMA10R2, file = file.path(PATH.SASi4, "DATA_in", "NAMA10", "EUNAMA10R2.rda"))

            ## env <- new.env()
            ## load(file.path(PATH.SASi4, "DATA_in", "NAMA10", "EUNAMA10R2.rda"), envir = env)
            ## ls(envir = env)

            load(file.path(PATH.SASi4, "DATA_in", "NAMA10", "EUNAMA10R2.rda"))

            ## DATA.XRATES[DATA.XRATES$cou=='CZE',]
            ## STAN.COUEN[STAN.COUEN$cou=='CZE',]
            ## nrow(subset(DATA.EUNAMAR2, year > 2011))
            ## nrow(subset(DATA.XRATES, year > 2010))
            ## DATA.EUNAMAR2 <- DATA.EUNAMAR2[!(DATA.EUNAMAR2$cou=="IRL" & DATA.EUNAMAR2$var=="PROD" & DATA.EUNAMAR2$ind=="DTOTAL"),] # See email CW Mon 20-Oct-2014 6:45 PM
            ## h(DATA.XRATES)
            ## DATA.EUNAMAR2 <- merge(DATA.EUNAMAR2, DATA.XRATES[DATA.XRATES$var=="EXCH",], by = c("cou", "year"))
            ## names(DATA.EUNAMAR2) <-  sub("var.x", "var", names(DATA.EUNAMAR2))
            ## names(DATA.EUNAMAR2) <-  sub("value.x", "value", names(DATA.EUNAMAR2))
            ## DATA.EUNAMAR2$value[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]] <- DATA.EUNAMAR2$value[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]] / DATA.EUNAMAR2$value.y[DATA.EUNAMAR2$var%in%STAN.VAR[["MON"]]]
            ## DATA.EUNAMAR2 <- subset(DATA.EUNAMAR2, select = c("cou", "var", "ind", "year", "value"))

            ## data already contains 2014 but exchange rates end in 2013

            ## h(subset(DATA.EUNAMA10R2, year==2014))
            ## h(subset(DATA.XRATES, year==2014))
            ## h(subset(data, year==2012))
            ## h(DATA.XRATES)

            ## DATA.EUNAMA10R2 <- convertCurrency(data = DATA.EUNAMA10R2, tounit = "USD")
            ## if (convertcurrency==TRUE) DATA.EUNAMA10R2 <- convertCurrency(data = DATA.EUNAMA10R2, tounit = tounit)

            DATA.EUNAMA10R2 <- subset(DATA.EUNAMA10R2, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("LFSEU"%in%list) {          # European labour force survey
            ## source(file.path(PATH.SKILL, "data", "_EULFS", "extract_EULFS.R"))
            load(file.path(PATH.SKILL, "data", "_EULFS", "OECD_130603_2.Rda"))
            DATA.LFSEU <- subset(DATA.LFSEU, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if("LFSAUS"%in%list) {          # US labour force survey
            ## source(file.path(PATH.SKILL, "data", "AUS", "read_LFS_AUS.R"))
            load(file.path(PATH.SKILL, "data", "AUS", "LFS_AUS_February.Rda"))
            DATA.LFSAUS$cou <- as.factor("AUS")
            DATA.LFSAUS$var <- as.factor("EMPN")
            DATA.LFSAUS <- subset(DATA.LFSAUS, select = c("cou", "var", "ind", "ocu", "year", "value"))
            DATA.LFSAUS <- subset(DATA.LFSAUS, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if("LFSCAN"%in%list)            # US labour force survey
        {
            ## source(file.path(PATH.SKILL, "data", "CAN", "read_LFS_CAN.R"))
            load(file.path(PATH.SKILL, "data", "CAN", "LFS_CAN_noc2011.Rda"))
            DATA.LFSCAN$cou <- as.factor("CAN")
            ## DATA.LFSCAN$var <- "EMPN"
            DATA.LFSCAN <- subset(DATA.LFSCAN, select = c("cou", "var", "ind", "ocu", "year", "value"))
            DATA.LFSCAN <- subset(DATA.LFSCAN, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if("LFSUSA"%in%list) {          # US labour force survey
            ## source(file.path(PATH.SKILL, "data", "USA", "read_LFS_USA.R")) # change nameyear
            load(file.path(PATH.SKILL, "data", "USA", "LFS_USA_March_isco2008.Rda"))
            DATA.LFSUSA$cou <- as.factor("USA")
            ## DATA.LFSUSA$var <- "EMPN"
            DATA.LFSUSA <- subset(DATA.LFSUSA, select = c("cou", "var", "ind", "ocu", "year", "value"))
            ## unique(DATA.LFSUSA$year)
            DATA.LFSUSA <- subset(DATA.LFSUSA, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if("LFSILO"%in%list) {   # ILOSTAT data ISIC Rev. 4, ISCO 2008
            ## source(file.path(PATH.SKILL, "data", "_ILO", "extract_ILOSTAT.R"))
            load(file.path(PATH.SKILL, "data", "_ILO", "EMP_ECO_OCU_ISIC4_ISCO2008.Rda"))
            DATA.LFSILO <- DATA.LFSILO[DATA.LFSILO$cou%in%namecou & DATA.LFSILO$var%in%namevar & DATA.LFSILO$ind%in%nameind,] # & DATA.LFSILO$year%in%nameyear,]
        }

        if ("NSONAPATCHi4"%in%list) { # collected information from NSOs in USD, combined with UNSDSNA for VA
            ## see section "combine all swn.csv files in NSONAPATCH" of file J:\STAN07\COU\master.R
            load(file.path(PATH.SASi4, "DATA_out", "NSONAPATCHi4.rda"))
            DATA.NSONAPATCHi4 <- subset(DATA.NSONAPATCHi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if("PIAAC"%in%list) {           # PIAAC data ASAP4
            ## source(file.path(PATH.SKILL, "data", "_PIAAC", "extract_PIAAC.R"))
            load(file.path(PATH.SKILL, "data", "_PIAAC", "CNTRY_ISCO08_ISIC4.Rda"))
            DATA.PIAAC <- subset(DATA.PIAAC, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("STANi4"%in%list) {           # STAN ISIC Rev. 4 in USD

            ## ## SQL.STAN <- odbcDriverConnect(connection = "SERVER=VS-GEN-SQL-3; DRIVER=SQL Server; DATABASE=STAN", readOnlyOptimize = TRUE)
            ## ## isic <- 4
            ## DATA.STANi4 <- queryData(connection=SQL.STAN,
            ##                         table="STANPUBi4_PRE",
            ##                         isic=isic)[,-6]

            ## DATA.STANi4 <-
            ##     DATA.STANi4 %>%
            ##         dplyr::filter(!var%in%c("EXPO", "IMPO")) %>%
            ##             tidyr::spread(key = var, value = value) %>%
            ##                 dplyr::group_by(ind, cou) %>%
            ##                     dplyr::mutate(VKPY = lag(VALU) * VALK / lag(VALK),
            ##                                   PKPY = lag(PROD) * PRDK / lag(PRDK),
            ##                                   IKPY = lag(INTI) * INTK / lag(INTK),
            ##                                   GKPY = lag(GFCF) * GFCK / lag(GFCK),
            ##                                   CNPY = lag(CAPN) * CPNK / lag(CPNK),
            ##                                   CGPY = lag(CAPG) * CPGK / lag(CPGK)) %>%
            ##                                       tidyr::gather(key = var, value = value, -cou, -ind, - year, na.rm = TRUE)

            ## ## DATA.STANi4 <- DATA.STANi4[!DATA.STANi4$var%in%c("EXPO", "IMPO"),]
            ## ## data <- DATA.STANi4
            ## ## df.d <- reshape2::dcast(DATA.STANi4, cou + ind + year ~ var, value.var = "value")
            ## ## df.d.pyp <- df.d %>%
            ## ##     group_by(ind, cou) %>%
            ## ##         mutate(VKPY = lag(VALU) * VALK / lag(VALK),
            ## ##                PKPY = lag(PROD) * PRDK / lag(PRDK),
            ## ##                IKPY = lag(INTI) * INTK / lag(INTK),
            ## ##                GKPY = lag(GFCF) * GFCK / lag(GFCK),
            ## ##                CNPY = lag(CAPN) * CPNK / lag(CPNK),
            ## ##                CGPY = lag(CAPG) * CPGK / lag(CPGK))
            ## ## df.m <- melt(df.d.pyp, id.vars = c("cou", "ind", "year"), variable.name = "var", na.rm=TRUE)
            ## ## DATA.STANi4 <- df.m
            ## ## DATA.STANi4 <- subset(DATA.STANi4, !is.na(value))
            ## save(DATA.STANi4, file = file.path(PATH.SASi4, "DATA_in", "STAN_SQL", "STANi4_NAC.rda"))

            ## ## ## convert to USD
            ## ## require(stanData)
            ## ## data(STANNAi0)
            load(file.path(PATH.SASi4, "DATA_in", "STAN_SQL", "STANi4_NAC.rda"))
            ## DATA.STANi4 <- convertCurrency(data=DATA.STANi4, datacur=DATA.XRATES[DATA.XRATES$var=="EXCH",])
            ## save(DATA.STANi4, file = file.path(PATH.SASi4, "DATA_in", "STAN_SQL", "STANi4_USD.rda"))
            ## load(file.path(PATH.SASi4, "DATA_in", "STAN_SQL", "STANi4_USD.rda"))
            ## write.csv(DATA.STANi4, file = file.path(dbpath, "Public", "stani4.csv"))
            DATA.STANi4 <- subset(DATA.STANi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("STDSSISi4"%in%list) {

            namedim <- dotStatGetDimensionList(channel = SQL.STAT,
                                               datasetcode = "SSIS_BSC_ISIC4",
                                               lang = "en")
            dim.list <- lapply(namedim, dotStatGetDimensionMemberList,
                               channel = SQL.STAT,
                               datasetcode = "SSIS_BSC_ISIC4",
                               lang = "en")
            names(dim.list) <- namedim
            namelocation.stan <- intersect(dim.list[["LOCATION"]], STAN.COU[["ICIO"]])
            namevar.stan <- intersect(dim.list[["VAR"]], STAN.VAR[["ALL"]])
            nameind.ssis <- STANi4.IND[["ALL"]]
            nameind.ssis <- sub("D", "", nameind.ssis)
            nameind.ssis <- sub("T", "_", nameind.ssis)
            nameind.ssis <- nameind.ssis[nameind.ssis%in%dim.list[["ISIC4"]]]

            DATA.STDSSISi4 <- transSTDSSIS(channel = SQL.STAT,
                                           isic = 4,
                                           year.min = 1970,
                                           namelocation = namelocation.stan,
                                           namevar = namevar.stan,
                                           nameisic = nameind.ssis)

            save(DATA.STDSSISi4, file = file.path(PATH.SASi4, "DATA_in", "SSIS", "STDSSISi4_NAC.rda"))


            ### ## convert to USD
            ## require(stanData)
            ## data(STANNAi0)
            load(file.path(PATH.SASi4, "DATA_in", "SSIS", "STDSSISi4_NAC.rda"))
            DATA.STDSSISi4 <- convertCurrency(data=DATA.STDSSISi4, datacur=DATA.XRATES[DATA.XRATES$var=="EXCH",])
            save(DATA.STDSSISi4, file = file.path(PATH.SASi4, "DATA_in", "SNA", "STDSSISi4_USD.rda"))

            DATA.STDSSISi4 <- subset(DATA.STDSSISi4, select = c("cou", "var", "ind", "year", "value"))
            ## load(file.path(PATH.SASi4, "DATA_in", "SNA", "STDSSISi4_USD.rda"))

            DATA.STDSSISi4 <- subset(DATA.STDSSISi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("STDSNAi4"%in%list) {

            ## ## require(stanData)
            ## ## require(dplyr)
            ## ## source(file.path(dbpath, "GitHub", "stanData", "R", "transSTDSNA.R"))
            ## ## "SQL.SNA" defined in Rinitfunctions.r
            ## DATA.STDSNAi4 <- transSTDSNA(channel = SQL.SNA, isic = 4, year.min = 1970)
            ## ## sort(unique(DATA.STDSNAi4$ind))
            ## ## ## compare with previous data
            ## ## DATA.STDSNAi4.new <- DATA.STDSNAi4
            ## ## load(file.path(PATH.SASi4, "DATA_in", "SNA", "STDSNAi4.rda"))
            ## ## str(DATA.STDSNAi4); str(DATA.STDSNAi4.new)
            ## ## setdiff(unique(DATA.STDSNAi4.new$cou), unique(DATA.STDSNAi4$cou))
            ## ## setdiff(unique(subset(DATA.STDSNAi4.new, cou=="USA")$var), unique(subset(DATA.STDSNAi4, cou=="USA")$var))
            ## ## DATA.STDSNAi4 <- DATA.STDSNAi4.new
            ## ## h(subset(DATA.STDSNAi4, cou=="IRL" & var=="VALU"))
            ## ## add pyp variables
            ## df.d <- reshape2::dcast(DATA.STDSNAi4, cou + ind + year ~ var, value.var = "value")
            ## ## ## ## debug
            ## ## ## devtools::install(file.path(dbpath, "GitHub", "stan"))
            ## ## ## data <- df.d
            ## ## ## var.cp <- "VALU"
            ## ## ## var.cl <- "VALK"
            ## ## id.vars.SNA <- c("cou", "ind")
            ## ## refyear.SNA <- 2010
            ## ## df.d$VKPY <- stan::cpVolPyp(data=df.d,
            ## ##                             var.cp="VALU",
            ## ##                             var.cl="VALK",
            ## ##                             id.vars=id.vars.SNA)
            ## ## df.d$GKPY <- stan::cpVolPyp(data=df.d,
            ## ##                             var.cp="GFCF",
            ## ##                             var.cl="GFCK",
            ## ##                             id.vars=id.vars.SNA)
            ## ## df.m <- melt(df.d, id.vars = c("cou", "ind", "year"), variable.name = "var", na.rm=TRUE)
            ## df.d.pyp <- df.d %>%
            ##     dplyr::group_by(ind, cou) %>%
            ##         dplyr::mutate(VKPY = lag(VALU) * VALK / lag(VALK),
            ##                GKPY = lag(GFCF) * GFCK / lag(GFCK))
            ## df.m <- reshape2::melt(df.d.pyp, id.vars = c("cou", "ind", "year"), variable.name = "var", na.rm=TRUE)
            ## DATA.STDSNAi4 <- df.m
            ## DATA.STDSNAi4 <- subset(DATA.STDSNAi4, !is.na(value))
            ## max(DATA.STDSNAi4$year[DATA.STDSNAi4$cou=="USA"])
            ## save(DATA.STDSNAi4, file = file.path(PATH.SASi4, "DATA_in", "SNA", "STDSNAi4_NAC.rda"))



            ## convert to USD
            load(file.path(PATH.SASi4, "DATA_in", "SNA", "STDSNAi4_NAC.rda"))
            ## ls()
            ## h(DATA.STDSNAi4) # cou, ind, year, var, value
            ## DATA.STDSNAi4 <- convertCurrency(data=DATA.STDSNAi4, datacur=DATA.XRATES[DATA.XRATES$var=="EXCH",])
            DATA.STDSNAi4 <- subset(DATA.STDSNAi4, select = c("cou", "var", "ind", "year", "value"))
            ## save(DATA.STDSNAi4, file = file.path(PATH.SASi4, "DATA_in", "SNA", "STDSNAi4_USD.rda"))
            ## load(file.path(PATH.SASi4, "DATA_in", "SNA", "STDSNAi4_USD.rda"))

            DATA.STDSNAi4 <- subset(DATA.STDSNAi4, cou%in%namecou & var%in%namevar & ind%in%nameind)
        }

        if ("UNDATA206SNA93"%in%list) { # UN Data platform, table 203, connecting all series
            ## source(file.path(dbpath, "GitHub", "stanData", "data-raw", "transUNDATA.R"))
            ## save(DATA.UNDATA206SNA93, file = file.path(PATH.SASi4, "DATA_in", "UN", "UNSD_MADT", "UNDATA206SNA93.rda"))
            load(file.path(PATH.SASi4, "DATA_in", "UN", "UNSD_MADT", "UNDATA206SNA93.rda")) # in USD
            DATA.UNDATA206SNA93 <- subset(DATA.UNDATA206SNA93, cou%in%namecou & var%in%namevar & ind%in%nameind)
            list <- c(list, "UNDATA206SNA93")
        }

        if ("UNDATA206SNA08"%in%list) { # UN Data platform, table 203, connecting all series
            ## source(file.path(PATH.STAN, "1_load_UNSD_UNData.R"))
            ## save(DATA.UNDATA206SNA08, file = file.path(PATH.SASi4, "DATA_in", "UN", "UNSD_MADT", "UNDATA206SNA08.rda"))
            load(file.path(PATH.SASi4, "DATA_in", "UN", "UNSD_MADT", "UNDATA206SNA08.rda")) # in USD
            DATA.UNDATA206SNA08 <- subset(DATA.UNDATA206SNA08, cou%in%namecou & var%in%namevar & ind%in%nameind)
            list <- c(list, "UNDATA206SNA08")
        }

    }
    if (sqlite==FALSE) {
        if (replace==FALSE) {
            list <- c(sub("DATA.", "", list.exist), list)
        }
        ## ## delete object from Rda
        ## env <- new.env()
        ## data(STANNAi4, envir = env)
        ## list <- ls(env)
        ## list <- list[list!="DATA.XRATES"]
        ## save(list = list, file = file, envir = env)
        ## ##
        save(list = paste0("DATA.", list), file = file)
        addDatalist(file = file, list = paste0("DATA.", list))
    } else {
        ## file = file.path(PATH.REPO, "btdData", "data", "BTDIXEi3.db")
        ## list = "BTDIXE"
        diskdb <- dbConnect(SQLite(), dbname = file)
        ok <- dbWriteTable(conn = diskdb, name = list, value = eval(parse(text=paste0("DATA.", list))), row.names = FALSE, overwrite = TRUE)
    }
}

## additional ISIC Rev. 4 sources

## ## Eurostat Annual National Accounts (NAMA) [DATA.NAMAi4]
## load(file.path(PATH.SASi4,"DATA_in", "NAMA", "NAMA.rda"))

## ## STD Annual National Accounts (SNA) [DATA.SNAi4]
## load(file.path(PATH.SASi4,"DATA_in", "SNA", "SNA.rda"))

## Exchange rates and PPPs - old version
## DATA.XRATES <- sqlQuery(SQL.STAN, "SELECT * FROM XRATESMII")
## url.append <- paste0("/all")
## code.all <- sdmxRead(api="http://stats.oecd.org/SDMX-JSON",
##                      scheme="codelist",
##                      DSD="SNA_TABLE4",
##                      filter=filter.list,
##                      append=url.append,
##                      query=FALSE)
## ##
## filter.list <- lapply(code.all, '[[', 1)
## filter.list <- filter.list[!names(filter.list)=="TIME_PERIOD"]
## conv.var <- rbind.data.frame(c("EXC", "EXCH"),
##                              c("PPPGDP", "PPPS"))
## ##
## names(conv.var) <- c("transact", "var")
## url.append <- paste0('/all?', paste('json-lang=en', 'detail=Full', 'dimensionAtObservation=AllDimensions', sep = '&'))
## ##
## data.all <- NULL
## ## for (var in conv.var$transact) {
## for (var in conv.var$transact[1]) { # PPPGDP doesn't work
##     filter.list[["TRANSACT"]] <- var
##     data <- sdmxRead(api="http://stats.oecd.org/SDMX-JSON",
##                      scheme="data",
##                      DSD="SNA_TABLE4",
##                      filter=filter.list,
##                      append=url.append,
##                      query=FALSE)
##     data.all <- rbind(data.all, data)
## }
## if (any("EXCH"%in%namevar, "PPPS"%in%namevar)) {
bowerth/stan documentation built on May 13, 2019, 12:38 a.m.