R/oln_find_inputs.R

oln_find_inputs <- function(varlist, src, year, month) {
  # Ejecuta una subfunción, dependiendo de src
  if (src == "casen") inputs <- oln_find_inputs_casen(varlist, year)
  if (src == "esi")   inputs <-   oln_find_inputs_esi(varlist, year)
  if (src == "ene")   inputs <-   oln_find_inputs_ene(varlist, year, month)
  return(inputs)
}

oln_find_inputs_casen <- function(varlist, year) {
  # Modifica (temporalmente) las opciones globales
  saf <- getOption("stringsAsFactors")
  options(stringsAsFactors = FALSE)

  # Genera un df con los inputs de cada variable, según período
  df        <- data.frame(character(0), character(0), numeric(0), numeric(0))
  names(df) <- colnames <- c("output", "inputs", "year0", "year1")
  df <- df %>%
    rbind(c("activ_",        "activ",         2000, 2015)) %>%
    rbind(c("analfabeto_",   "e1",            1990, 2015)) %>%
    rbind(c("asalariado_",   "o15",           2011, 2015)) %>%
    rbind(c("asalariado_",   "o23",           2009, 2009)) %>%
    rbind(c("asalariado_",   "o19",           2006, 2006)) %>%
    rbind(c("asalariado_",   "o9",            2003, 2003)) %>%
    rbind(c("asalariado_",   "o10",           2000, 2000)) %>%
    rbind(c("cise_",         "o15 o17 o16",   2011, 2015)) %>%
    rbind(c("cise_",         "o23 o25 o26",   2009, 2009)) %>%
    rbind(c("cise_",         "o19 o20 o21",   2006, 2006)) %>%
    rbind(c("cise_",         "o9 o11 o12a",   2003, 2003)) %>%
    rbind(c("contrato_",     "o17",           2011, 2015)) %>%
    rbind(c("contrato_",     "o25",           2009, 2009)) %>%
    rbind(c("contrato_",     "o20",           2006, 2006)) %>%
    rbind(c("contrato_",     "o11",           2003, 2003)) %>%
    rbind(c("edad_",         "edad",          1990, 2015)) %>%
    rbind(c("edad_tr_",      "edad",          1990, 2015)) %>%
    rbind(c("educ_",         "educ",          2013, 2015)) %>%
    rbind(c("educ_sup_",     "educ",          2013, 2015)) %>%
    rbind(c("etnia_",        "r3",            2015, 2015)) %>%
    rbind(c("etnia_",        "r6",            2011, 2013)) %>%
    rbind(c("etnia_",        "t5",            2009, 2009)) %>%
    rbind(c("hr_hab_",       "o10",           2013, 2015)) %>%
    rbind(c("macrozona_",    "region",        2009, 2015)) %>%
    rbind(c("macrozona_",    "r",             1990, 2006)) %>%
    rbind(c("ocupado_",      "activ",         2000, 2015)) %>%
    rbind(c("oficio1_",      "oficio1",       2011, 2015)) %>%
    rbind(c("oficio1_",      "oficio",        2000, 2009)) %>%
    rbind(c("oficio4_",      "oficio4",       2015, 2015)) %>%
    rbind(c("oficio4_",      "oficio4_n",     2013, 2013)) %>%
    rbind(c("oficio4_",      "oficio4",       2011, 2011)) %>%
    rbind(c("psu_",          "varunit",       2011, 2015)) %>%
    rbind(c("psu_",          "segmento",      2009, 2009)) %>%
    rbind(c("psu_",          "seg",           2006, 2006)) %>%
    rbind(c("psu_",          "segmento",      1998, 2003)) %>%
    rbind(c("psu_",          "seg",           1998, 1998)) %>%
    rbind(c("pw_",           "expr",          2013, 2015)) %>%
    rbind(c("pw_",           "expr_full",     2011, 2011)) %>%
    rbind(c("pw_",           "expr",          2000, 2009)) %>%
    rbind(c("rama1_",        "rama1",         2011, 2015)) %>%
    rbind(c("region_re_",    "region comuna", 2009, 2015)) %>%
    rbind(c("region_re_",    "r comuna",      2006, 2006)) %>%
    rbind(c("region_re_",    "r comu",        1990, 2003)) %>%
    rbind(c("sexo_",         "sexo",          2000, 2015)) %>%
    rbind(c("strata_",       "varstrat",      2011, 2015)) %>%
    rbind(c("strata_",       "estrato",       1998, 2009)) %>%
    rbind(c("trabsub_",      "oficio4",       2015, 2015)) %>%
    rbind(c("trabsub_",      "oficio4_n",     2013, 2013)) %>%
    rbind(c("trabsub_",      "oficio4",       2011, 2011)) %>%
    rbind(c("yopr_",         "yoprcor",       2013, 2015)) %>%
    rbind(c("yopr_",         "yopraj",        1990, 2011)) %>%
    rbind(c("ytrab_",        "ytrabajocor",   2013, 2015)) %>%
    rbind(c("ytrab_",        "ytrabaj",       1990, 2011)) %>%
    rbind(c("zona_",         "zona",          2009, 2015)) %>%
    rbind(c("zona_",         "z",             1990, 2006))

  # Repone un nombre para cada columna
  names(df) <- colnames

  # Deshace los cambios a las opciones globales
  options(stringsAsFactors = saf)

  # Filtra df, dejando solo los inputs relevantes para varlist
  df <- df %>%
    dplyr::filter(output %in% varlist, year0 <= year, year <= year1) %>%
    dplyr::distinct(inputs)

  # Particiona los registros con más de un input
  inputs <- df$inputs %>%
    strsplit(split = " ") %>%
    unlist()

  # Reporta los resultados
  return(inputs)
}

oln_find_inputs_ene <- function(varlist, year, month) {
  # Modifica (temporalmente) las opciones globales
  saf <- getOption("stringsAsFactors")
  options(stringsAsFactors = FALSE)

  # Genera un df con los inputs de cada variable, según período
  df        <- data.frame(character(0), character(0))
  names(df) <- colnames <- c("output", "inputs")
  df <- df %>%
    rbind(c("cise_",      "categoria_ocupacion b8 b9")) %>%
    rbind(c("duremp_",    "b17_ano b17_mes"))           %>%
    rbind(c("duremp_tr_", "b17_ano b17_mes"))           %>%
    rbind(c("edad_tr_",   "edad"))                      %>%
    rbind(c("educ_",      "nivel termino_nivel"))       %>%
    rbind(c("ocupado_",   "cae_general"))               %>%
    rbind(c("oficio1_",   "b1"))                        %>%
    rbind(c("rama1_",     "b14"))                       %>%
    rbind(c("sexo_",      "sexo"))                      %>%
    rbind(c("zona_",      "tipo"))

  # Repone un nombre para cada columna
  names(df) <- colnames

  # Deshace los cambios a las opciones globales
  options(stringsAsFactors = saf)

  # Filtra df, dejando solo los inputs relevantes para varlist
  df <- df %>%
    dplyr::filter(output %in% varlist) %>%
    dplyr::distinct(inputs)

  # Particiona los registros con más de un input
  inputs <- df$inputs %>%
    strsplit(split = " ") %>%
    unlist()

  # Reporta los resultados
  return(inputs)
}
igutierrezm/mypkgr documentation built on May 8, 2019, 11:45 a.m.