[R-es] preguntas múltiples y creación de variables

Proyecto R-UCA r-uc@ @end|ng |rom uc@@e@
Mar Mar 21 09:05:38 CET 2023


Buenas,

las imágenes no se ven por lo que no puedo reproducir tu ejemplo, pero tal vez lo siguiente te valga:
> library('stringr')
> d <- data.frame(respuestas = c('manzana, naranja', 'manzana, melocotón', 'naranja, melocotón'))
> d
          respuestas
1   manzana, naranja
2 manzana, melocotón
3 naranja, melocotón
> d$manzana <- sapply(d$respuestas, FUN = str_detect, 'manzana', simplify = TRUE)
> d$naranja <- sapply(d$respuestas, FUN = str_detect, 'naranja', simplify = TRUE)
> d
          respuestas manzana naranja
1   manzana, naranja    TRUE    TRUE
2 manzana, melocotón    TRUE   FALSE
3 naranja, melocotón   FALSE    TRUE

Un saludo, Manuel.

El lun, 20-03-2023 a las 17:09 -0300, juan manuel dias escribió:
> Hola, cómo andan!
> 
> Tengo el siguiente problema.
> 
> Tengo una pregunta cuya respuesta es múltiple, pero en en la base están
> todas las respuestas en una misma variable y cada respuesta está
> separada por ",".
> 
> Así está
> 
> [image: image.png]
> 
> Hago esto para poder separar en columnas las distintas respuestas:
> 
> 
> 
> 
> 
> *mult_bas_dat<-mult_bas_dat %>%  separate_rows(bases, sep = ",") %>%
> mutate(basedatos = str_squish(bases)) %>%  select(basedatos)*
> ## múltiple a columnas ##
> 
> 
> 
> 
> 
> *mult_bas_dat_final<-mult_bas_dat %>%  separate_rows(basedatos, sep = ",")
> %>%  mutate(basedatos = str_squish(basedatos), # Para quitar los espacios
> en blanco indeseados         id = 1) %>%  spread(key = basedatos, value =
> id)*
> 
> ## na's a 0 ##
> 
> *mult_bas_dat_final[is.na
> <https://urldefense.com/v3/__http://is.na/__;!!D9dNQwwGXtA!TsC3j72nXLD-S9sKeaG-5pjChVYrV50lLQSZr1EC7xry6qlcSxhH2t-I-jcHTbshUTYCwdUvub1KiPE
> $ >(mult_bas_dat_final)] <- 0*
> # limpio los nombres #
> 
> *mult_bas_dat_final <- mult_bas_dat_final %>%  clean_names()*
> 
> ## cambio nombres a cada opción de bases ##
> *mult_bas_dat_final=rename(mult_bas_dat_final,
> c(excel="p5.1",sheets="p5.2",sql_server_microsoft="p5.3",mongo_db="p5.4",access="p5.5",oracle="p5.6",mysql="p5.7",postgre_sql="p5.8"))*
> 
> Me queda así
> 
> [image: image.png]
> 
> El tema es que cuándo quiero correr el siguiente código:
> 
> 
> 
> 
> 
> 
> 
> *mutate(puntaje_p4_p5=case_when(p4_bases_prop==1 & p5.1==1 ~ 0.4,
>                        p4_bases_prop==1 & p5.2==1 ~ 0.5,
>              (p4_bases_prop==1) & ((p5.1==1) & (p5.3==1) | (p5.4==1) |
> (p5.6=1) | (p5.7==1) | (p5.8==1)) ~  1,
>  (p4_bases_prop==1) & ((p5.2==1) & (p5.3==1) | (p5.4==1) | (p5.6=1) |
> (p5.7==1) | (p5.8==1)) ~  1,
>  (p4_bases_prop==1) & ((p5.5==1) & (p5.3==1) | (p5.4==1) | (p5.6=1) |
> (p5.7==1) | (p5.8==1)) ~  1,
>  (p4_bases_prop==1) & (p5.3==1 | p5.4==1 | p5.6==1 | p5.7==1 | p5.8==1) ~
> 1,                                 p4_bases*_prop==1  &  p5.5==1 ~ 0.6,
> 
> Sale el siguiente error porque no encuentra una de las variables que están
> en los condicionales, en este caso p5.3, pero podría ser cualquier otra.
> 
> [image: image.png]
> 
> Necesito para todos los casos generar tantas columnas como posibilidades de
> respuesta tengo en esa pregunta, más allá de las respuestas generadas.
> 
> Las posibles respuestas son: excel, sheets, sql_server_microsoft,
> mongo_db, access, oracle, mysql, postgre_sql
> 
> Por ejemplo, este caso que respondió así:
> 
> *"excel, sheets, oracle, postgre_sql"   *
> 
> Necesitaría que quede así
> 
> [image: image.png]
> 
> Y así con todos los casos, por ejemplo, si solo respondió "*excel",
> *necesitaría
> que quede así:
> 
> [image: image.png]
> 
> Estoy intentando hacerlo pero sin resultados!
> 
> Muchas gracias! Juan.
> 
>         [[alternative HTML version deleted]]
> 
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!TsC3j72nXLD-S9sKeaG-5pjChVYrV50lLQSZr1EC7xry6qlcSxhH2t-I-jcHTbshUTYCwdUvoDzCjq4$
>  



Más información sobre la lista de distribución R-help-es