R/w_ru_agrupacion_numerica.R

Defines functions w_ru_agrupacion_numerica

Documented in w_ru_agrupacion_numerica

#' transforma una variable numérica en uan de rangos
#'
#' Función para transformar una variable numérica en una categórica de rangos
#'
#' @param variable caracter con el nombre de la variable que se modificará
#'
#' @param agrupacion caracter que tiene la información de recodificación en el formato siguiente "18-24 25-35"
#'
#' @param nueva_variable caracter con el nombre que tenga la variable recodificada
#'
#' @param datos dataframe con los datos para transformar
#'
#' @return dataframe con una sóla columna correspondiente a la transformación


# función para transformar matriz de marcas a matriz de menciones y su inversa
w_ru_agrupacion_numerica <- function(variable,agrupacion,nueva_variable,datos){
  if(is.na(agrupacion)){
    return(NA)
  }

  eval(parse(text = paste0(
    'datos <- datos %>%
    mutate(',variable,'= as.numeric(as.character(',variable,')))'
  )))


  etiquetas <- strsplit(agrupacion,split = ' ') %>%
    unlist %>%
    paste0(.,collapse = '","') %>%
    paste0('c("',.) %>%
    paste0(.,'")')

  rangos <- strsplit(agrupacion,split = ' ') %>%
    unlist %>%
    strsplit(.,'-') %>%
    map(.,tail,1) %>%
    paste0(.,collapse = ',') %>%
    paste0('c(-Inf,',.) %>%
    paste0(.,')')

  resultado <- eval(parse(text = paste0(
    'datos %>%
    transmute(',nueva_variable,' = cut(',variable,',breaks = ',rangos,',labels = ',etiquetas,'))'
  )))

  return(resultado)

}
pelishk/upax_library documentation built on Nov. 28, 2022, 10:45 a.m.