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

juan manuel dias ju@m@d|@@ @end|ng |rom gm@||@com
Mar Mar 21 19:20:43 CET 2023


hola muchas gracias! me hice mucho lío en cómo lo pene´....finalmente usé
este código que me srvió
para resolver lo que estaba buscando! gracias!

misdatos<-misdatos %>%
  mutate(excel = case_when(grepl("Excel", r5) ~ 1,
                           TRUE ~ 0)) %>%
  mutate(oracle = case_when(grepl("Oracle", r5) ~ 1,
                            TRUE ~ 0)) %>%
  mutate(sheets = case_when(grepl("Sheets", r5) ~ 1,
                            TRUE ~ 0)) %>%
  mutate(sql_server_microsoft = case_when(grepl("SQL Server (Microsoft)",
r5) ~ 1,
                                          TRUE ~ 0)) %>%
  mutate(mongo_db = case_when(grepl("Mongo db", r5) ~ 1,
                              TRUE ~ 0)) %>%
  mutate(access = case_when(grepl("Access", r5) ~ 1,
                            TRUE ~ 0)) %>%
  mutate(mysql = case_when(grepl("MySQL", r5) ~ 1,
                           TRUE ~ 0)) %>%
  mutate(postgre_sql = case_when(grepl("Postgre-SQL", r5) ~ 1,
                                 TRUE ~ 0))


El mar, 21 mar 2023 a las 5:06, Proyecto R-UCA (<r-uca using uca.es>) escribió:

> 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$
> >
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



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