R/add_varlist.R

#' Expande una BBDD con una o más variables del diccionario.
#'
#' @param df      Un tibble (debe incluir los insumos de \code{varlist}).
#' @param varlist (string vector) Los nombres de las variables por agregar.
#' @param src     (string scalar) El nombre de la encuesta.
#' @param year    (double scalar) El año de la encuesta.
#' @param month   (double scalar) El mes de la encuesta.
#'
#' @return Un tibble expandido con las columnas indicadas en \code{varlist}.
#'
#' @export
#' @importFrom magrittr %>%
#' @encoding   UTF-8
#'
#' @examples
#' add_varlist(casen_2015, "educ_", src = "casen", year = 2015)
add_varlist <- function(df,
                        varlist,
                        src   = c("casen", "ene", "esi"),
                        year  = 2100,
                        month = 12) {
  # Loop principal
  for (output in varlist) {
    # Agrega una variable del listado
    f <- sprintf("add_%s_%s", src, output) %>% get()
    df <- f(df, year, month)

    # Ajusta el encoding de las etiquetas de variables
    try(Encoding(attr(df[[output]], "label"))         <- "UTF-8", silent = TRUE)
    try(Encoding(names(attr(df[[output]], "labels"))) <- "UTF-8", silent = TRUE)

    # Factoriza la variable (si corresponde)
    labs <- attr(df[[output]], "labels")
    if (!is.null(labs)) {
      # Añade la categoría "ns/nr"
      attr(df[[output]], "labels") <- c(labs, "ns/nr" = NA)

      # Convierte la variable en un factor
      class(df[[output]]) <- "labelled"
      df[[output]] <- labelled::to_factor(df[[output]], exclude = NULL)
    }
  }

  # Reporta el resultado
  return(df)
}

#===============================================================================
# Diccionario CASEN (en orden alfabético)
#===============================================================================

add_casen_activ_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("activ_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("ocupado" = 1, "desocupado" = 2, "inactivo" = 3)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "condición de actividad"

  # Reporta el resultado
  return(df)
}

add_casen_cise_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("cise_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    {if (year <= 2009) dplyr::recode(., `8` = 9, `9` = 8) else .} %>%
    cut(breaks = c(0, 1, 2, 8, 9), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("empleador" = 1, "cuenta propia" = 2, "asalariado" = 3, "fnr" = 4)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "condición de actividad"

  # Reporta el resultado
  return(df)
}

add_casen_edad_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("edad_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <- "edad"

  # Reporta el resultado
  return(df)
}

add_casen_educ_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("educ_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    as.numeric() %>%
    dplyr::recode(`8` = 9, `9` = 8) %>%
    cut(breaks = c(-1, 1, 4, 8, 9, 11, 12), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("ninguno"     = 1,
      "básica"      = 2,
      "media"       = 3,
      "técnica"     = 4,
      "profesional" = 5,
      "postgrado"   = 6)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "máximo nivel educacional completado"

  # Reporta el resultado
  return(df)
}

add_casen_etnia_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("etnia_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    cut(breaks = c(0, 9, 10), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("indígena" = 1, "no indígena" = 2)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "etnia"

  # Reporta el resultado
  return(df)
}

add_casen_hr_hab_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("hr_hab_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    dplyr::recode(`999` = NA_real_)

  # Etiqueta la variable
  attr(df[[output]], "label") <-
    "horas habitualmente trabajadas a la semana"

  # Reporta el resultado
  return(df)
}

add_casen_jornada_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("jornada_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    dplyr::recode(`1` = 2, `2` = 1) %>%
    cut(breaks = c(0, 1, 3, 4), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("parcial" = 1, "completa" = 2, "otra" = 3)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "tipo de jornada"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. ¿Cómo clasificar a los otros tipos de jornadas?
}

add_casen_nacionalidad_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("nacionalidad_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    cut(breaks = c(0, 2, 3), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("chileno" = 1, "extranjero" = 2)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "tipo de jornada"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. Los chilenos con doble nacionalidad fueron considerados chilenos.
}

add_casen_macrozona_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("macrozona_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    dplyr::recode(`13` = 5,`14` = 8, `15` = 1) %>%
    cut(breaks = c(0, 4, 7, 12), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("norte" = 1, "centro" = 2, "sur" = 3)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "macrozona"

  # Reporta el resultado
  return(df)
}

add_casen_numper_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("numper_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <- "número de personas en el hogar"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. excluye servicio doméstico puertas adentro (sdpa)
}

add_casen_oficio1_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("oficio1_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <-
    (df[[inputs]] - (year == 2000)) %>%
    dplyr::recode(`10` = NA_real_, `9999` = NA_real_)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("fuerzas armadas"                                                     = 0,
      "miembros del poder ejecutivo/legislativo y del personal directivo"   = 1,
      "profesionales, científicos e intelectuales"                          = 2,
      "técnicos profesionales de nivel medio"                               = 3,
      "empleados de oficina"                                                = 4,
      "trabajadores de los servicios y vendedores de comercios y mercados"  = 5,
      "agricultores y trabajadores calificados agropecuarios y pesqueros"   = 6,
      "oficiales, operarios y artesanos de artes mecánicas y otros oficios" = 7,
      "operadores de instalaciones y máquinas y montadores"                 = 8,
      "trabajadores no calificados"                                         = 9)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "gran grupo de ocupacion (ciuo-88)"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. El nombre del gran grupo 1 fue resumido.
}

add_casen_pobre_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("pobre_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    dplyr::recode(`0` = 2, `2` = 0) %>%
    cut(breaks = c(-1, 1, 3), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("pobre" = 1, "no pobre" = 2)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "situación de pobreza"

  # Reporta el resultado
  return(df)
}

add_casen_psu_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("psu_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <- "psu"

  # Reporta el resultado
  return(df)
}

add_casen_pweight_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("pweight_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <- "pweight"

  # Reporta el resultado
  return(df)
}

add_casen_rama1_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("rama1_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    dplyr::recode(`12` = 16, `16` = 12) %>%
    cut(breaks = c(seq(0, 11), 15, 17), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("agropecuario-silvícola"                                 = 01,
      "pesca"                                                  = 02,
      "minería"                                                = 03,
      "industria manufacturera"                                = 04,
      "electricidad, gas y agua"                               = 05,
      "construcción"                                           = 06,
      "comercio"                                               = 07,
      "hoteles y restaurantes"                                 = 08,
      "transporte y comunicaciones"                            = 09,
      "intermediación financiera"                              = 10,
      "actividades inmobiliarias, empresariales y de alquiler" = 11,
      "servicios personales"                                   = 12,
      "administración pública"                                 = 13)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "rama de actividad económica (ciiu-rev3)"

  # Reporta el resultado
  return(df)
}

add_casen_region_re_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("region_re_")
  inputs <- find_inputs(output, src = "casen", year = year)
  region <- inputs[1]
  comuna <- inputs[2]

  # Genera la nueva variable
  df[[output]] <- df[[region]] %>%
    dplyr::recode(
      `15` = 01,  # "región de arica y parinacota"
      `01` = 02,  # "región de tarapacá"
      `02` = 03,  # "región de antofagasta"
      `03` = 04,  # "región de atacama"
      `04` = 05,  # "región de coquimbo"
      `05` = 06,  # "región de valparaíso"
      `13` = 07,  # "región metropolitana de santiago"
      `06` = 08,  # "región del libertador general bernardo o'higgins"
      `07` = 09,  # "región del maule"
      `08` = 10,  # "región del biobío"
      `09` = 11,  # "región de la araucanía"
      `14` = 12,  # "región de los ríos"
      `10` = 13,  # "región de los lagos"
      `11` = 14,  # "región de aysén del general carlos ibáñez del campo"
      `12` = 15)  # "región de magallanes y de la antártica chilena"
    if (year <= 2003) {
      df[df[[comuna]] %in% c(1101:1202),   output] <- 01
      df[df[[comuna]] %in% c(10101:10112), output] <- 12
    }
    if (year >= 2006) {
      df[df[[comuna]] %in% c(1201:1302),   output] <- 01
      df[df[[comuna]] %in% c(10501:10512), output] <- 12
    }

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("región de arica y parinacota"                        = 01,
      "región de tarapacá"                                  = 02,
      "región de antofagasta"                               = 03,
      "región de atacama"                                   = 04,
      "región de coquimbo"                                  = 05,
      "región de valparaíso"                                = 06,
      "región metropolitana de santiago"                    = 07,
      "región del libertador general bernardo o'higgins"    = 08,
      "región del maule"                                    = 09,
      "región del biobío"                                   = 10,
      "región de la araucanía"                              = 11,
      "región de los ríos"                                  = 12,
      "región de los lagos"                                 = 13,
      "región de aysén del general carlos ibáñez del campo" = 14,
      "región de magallanes y de la antártica chilena"      = 15)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "región de residencia"

  # Reporta el resultado
  return(df)
}

add_casen_sexo_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("sexo_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("hombre" = 1, "mujer" = 2)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "sexo"

  # Reporta el resultado
  return(df)
}

add_casen_strata_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("strata_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <- "strata"

  # Reporta el resultado
  return(df)
}

add_casen_tramo_edad_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("tramo_edad_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    cut(breaks = c(0, 14, 24, 34, 44, 54, 64, Inf), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("14-"   = 1,
      "15-24" = 2,
      "25-34" = 3,
      "35-44" = 4,
      "45-54" = 5,
      "55-64" = 6,
      "65+"   = 7)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "Tramo de edad (en años)"

  # Reporta el resultado
  return(df)
}

add_casen_tramo_numper_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("tramo_numper_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]] %>%
    cut(breaks = c(0, 3, 4, 5, Inf), labels = FALSE)

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("3-" = 1, "4" = 2, "5" = 3, "6+" = 4)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "Tramo de número de personas en el hogar"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. excluye servicio doméstico puertas adentro (sdpa)
}

add_casen_yopr_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("yopr_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta la variable
  attr(df[[output]], "label") <-
    "ingreso de ocupación principal (en pesos corrientes)"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. ¿Usar pesos corrientes? Discutir
}

add_casen_yopr_hr_hab_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("yopr_hr_hab_")
  inputs <- find_inputs(output, src = "casen", year = year)
  yopr   <- inputs[1]
  hr_hab <- inputs[2]

  # Genera la nueva variable
  df[[output]] <- df[[hr_hab]] %>%
    {dplyr::if_else(is.na(.), NA_real_, df[[yopr]] / . / 4)}

  # Etiqueta la variable
  attr(df[[output]], "label") <-
    "ingreso de ocupación principal (en pesos corrientes)"

  # Reporta el resultado
  return(df)

  # Notas
  # 1. ¿Cambiar a pesos constantes? Meditar
}

add_casen_zona_ <- function(df, year, ...) {
  # Identifica inputs y outputs
  output <- c("zona_")
  inputs <- find_inputs(output, src = "casen", year = year)

  # Genera la nueva variable
  df[[output]] <- df[[inputs]]

  # Etiqueta los valores
  attr(df[[output]], "labels") <-
    c("urbano" = 1, "rural" = 2)

  # Etiqueta la variable
  attr(df[[output]], "label") <- "zona"

  # Reporta el resultado
  return(df)
}

#===============================================================================
# Diccionario ENE (en orden alfabético)
#===============================================================================

# add_ene_cise_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- "cise_"
#   inputs <- "categoria_ocupacion"
#
#   # Genera la nueva variable
#   df[[output]] <- df[[inputs]] %>%
#     cut(breaks = c(0, 1, 2, 6, 7), labels = FALSE)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Empleador"     = 1,
#       "Cuenta propia" = 2,
#       "Asalariado"    = 3,
#       "FNR"           = 4,
#       "ns/nr"         = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Categoría de ocupación"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_duremp_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("duremp_")
#   inputs <- c("b17_ano", "b17_mes")
#
#   # Particiona los inputs
#   ano <- inputs[1]
#   mes <- inputs[2]
#
#   # Genera la nueva variable
#   temp  <- (year - df[[ano]]) + (month - df[[mes]]) / 12
#   touse <- (df[[mes]] %in% 999 | df[[ano]] %in% 9999)
#   temp[touse]  <- NA_real_
#   df[[output]] <- temp
#
#   # # Etiqueta la variable
#   attr(df[[output]], "label") <- "Duración del empleo (en años)"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_duremp_tr_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("duremp_tr_")
#   inputs <- c("b17_ano", "b17_mes")
#
#   # Genera los inputs intermedios (si es que no existen ya)
#   if (!("duremp_" %in% colnames(df))) {
#     df <- add_ene_duremp_(df, year, month)
#   }
#
#   # Genera la nueva variable
#   df[[output]] <- df[["duremp_"]] %>%
#     cut(breaks = c(-Inf, 1, 5, 10, Inf), labels = FALSE)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("[0, 1)"  = 1,
#       "[1, 5)"  = 2,
#       "[5, 10)" = 3,
#       "[10, ∞)" = 4,
#       "ns/nr"   = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Tramo de duración de empleo (en años)"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_edad_tr_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("edad_tr_")
#   inputs <- c("edad")
#
#   # Genera la nueva variable
#   df[[output]] <- df[[inputs]] %>%
#     cut(breaks = c(-Inf, 14, 24, 34, 44, 54, 64, Inf), labels = FALSE)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("14 o menos"    = 1,
#       "Entre 15 y 24" = 2,
#       "Entre 25 y 34" = 3,
#       "Entre 35 y 44" = 4,
#       "Entre 45 y 54" = 5,
#       "Entre 55 y 64" = 6,
#       "65 o mas"      = 7,
#       "ns/nr"         = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Tramo de edad (en años)"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_educ_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("educ_")
#   inputs <- c("nivel", "termino_nivel")
#
#   # Particiona los inputs
#   n <- inputs[1]
#   t <- inputs[2]
#
#   # Genera la nueva variable
#   df[[output]] <-
#     dplyr::case_when(df[[n]] %in% 0:2                       ~ 1,
#                      df[[n]] %in% 3          & df[[t]] == 2 ~ 1,
#                      df[[n]] %in% 3          & df[[t]] == 1 ~ 2,
#                      df[[n]] %in% c(4:6, 14) & df[[t]] == 2 ~ 2,
#                      df[[n]] %in% c(4:6, 14) & df[[t]] == 1 ~ 3,
#                      df[[n]] %in% 7:9        & df[[t]] == 2 ~ 3,
#                      df[[n]] %in% 7:8        & df[[t]] == 1 ~ 4,
#                      df[[n]] %in% 9          & df[[t]] == 1 ~ 5,
#                      df[[n]] %in% 10                        ~ 5,
#                      df[[n]] %in% 11:12      & df[[t]] == 2 ~ 5,
#                      df[[n]] %in% 11:12      & df[[t]] == 2 ~ 6,
#                      TRUE ~ NA_real_)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Básica incompleta o menos" = 1,
#       "Básica"                    = 2,
#       "Media"                     = 3,
#       "Técnica"                   = 4,
#       "Profesional"               = 5,
#       "Postgrado"                 = 6,
#       "ns/nr"                     = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Nivel educacional"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_ocupado_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("ocupado_")
#   inputs <- c("cae_general")
#
#   # Genera la nueva variable
#   df[[output]] <-
#     dplyr::case_when(df[[inputs]] %in% 1:3       ~ 1,
#                      df[[inputs]] %in% c(0, 4:9) ~ 0,
#                      TRUE ~ NA_real_)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("No" = 0, "Sí" = 1, "ns/nr" = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Dummy ocupados"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_oficio1_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("oficio1_")
#   inputs <- c("b1")
#
#   # Genera la nueva variable
#   df[[output]] <-
#     dplyr::recode(as.numeric(df[[inputs]]), `10` = NA_real_)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Fuerzas armadas"                                                     = 0,
#       "Miembros del poder ejecutivo/legislativo y personal directivo"       = 1,
#       "Profesionales, científicos e intelectuales"                          = 2,
#       "Técnicos profesionales de nivel medio"                               = 3,
#       "Empleados de oficina"                                                = 4,
#       "Trabajadores de los servicios y vendedores de comercios y mercados"  = 5,
#       "Agricultores y trabajadores calificados agropecuarios y pesqueros"   = 6,
#       "Oficiales, operarios y artesanos de artes mecánicas y otros oficios" = 7,
#       "Operadores de instalaciones y maquinas y montadores"                 = 8,
#       "Trabajadores no calificados"                                         = 9,
#       "ns/nr" = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Gran grupo de ocupación (CIUO-88)"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_rama1_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("rama1_")
#   inputs <- c("b14")
#
#   # Genera la nueva variable
#   df[[output]] <-
#     dplyr::case_when(as.numeric(df[[inputs]]) %in% c(12, 17) ~ 12,
#                      as.numeric(df[[inputs]]) %in% 13:16     ~ 13,
#                      TRUE ~ as.numeric(df[[inputs]]))
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Agropecuario-silvícola"                                 = 1,
#       "Pesca"                                                  = 2,
#       "Minería"                                                = 3,
#       "Industria manufacturera"                                = 4,
#       "Electricidad, gas y agua"                               = 5,
#       "Construcción"                                           = 6,
#       "Comercio"                                               = 7,
#       "Hoteles y restaurantes"                                 = 8,
#       "Transporte y comunicaciones"                            = 9,
#       "Intermediación financiera"                              = 10,
#       "Actividades inmobiliarias, empresariales y de alquiler" = 11,
#       "Servicios personales"                                   = 12,
#       "Administración publica"                                 = 13,
#       "ns/nr"                                                  = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Rama de actividad (CIIU-rev3)"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_sexo_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("sexo_")
#   inputs <- c("sexo")
#
#   # Genera la nueva variable
#   df[[output]] <- df[[inputs]]
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Hombre" = 1, "Mujer" = 2, "ns/nr" = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Sexo"
#
#   # Reporta el resultado
#   return(df)
# }
#
# add_ene_zona_ <- function(df, year, month, ...) {
#   # Identifica inputs y outputs
#   output <- c("zona_")
#   inputs <- c("tipo")
#
#   # Genera la nueva variable
#   df[[output]] <-
#     as.numeric(df[[inputs]] <= 2)
#
#   # Etiqueta los valores
#   attr(df[[output]], "labels") <-
#     c("Rural" = 0, "Urbano" = 1, "ns/nr" = NA)
#
#   # Etiqueta la variable
#   attr(df[[output]], "label") <- "Zona"
#
#   # Reporta el resultado
#   return(df)
# }
igutierrezm/olndictr documentation built on May 31, 2019, 8:07 a.m.