#' función para transformar columnas a menciones
#'
#' Transforma conjuntos de respuesta múltiple que tienen en cada columna una marca a un dataframe en el que todo está por orden de mención, obviamente el orden de mención generado es ficticio
#'
#' @param tabla dataframe
#' @param n_menciones número máximo de menciones permitidas (si tienes 15 marcas se recomienda usar n = 15 para verificar)
#' @param prefijo character que define el nombre que comparten las variables generadas
#'
#' @return Un archivo del mismo tipo con la proyección correcta y las columnas de longitud y latitud en los datos.
# función para transformar matriz de marcas a matriz de menciones y su inversa
w_rm_columnas_a_menciones <- function(tabla,n_menciones,prefijo){
f_aux_vector_marcas <- function(a){
resultado <- unlist(str_split(a,'_'))[which(unlist(str_split(a,'_')) != '')]
return(resultado)
}
f_aux_vectores_a_dataframe <- function(vector){
cuantos <- 30 - length(vector)
vector <- c(vector,rep(NA,cuantos))
dataframe <- data.frame(t(unlist(vector)))
return(dataframe)
}
eval(parse(text= paste0(
"a <- tabla %>%
mutate_all(as.character) %>%
replace(is.na(.),'') %>%
unite(.,p1_01,1:length(.),sep = '_') %>% unlist"
)))
resultado <- map(a,f_aux_vector_marcas) %>%
map(.,f_aux_vectores_a_dataframe) %>%
do.call('rbind',.) %>%
select_if(function(x) !(all(is.na(x)) | all(x==""))) %>%
select_at(1:min(n_menciones,length(.)))
names(resultado) <- paste0(prefijo,'_',1:length(resultado))
return(resultado)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.