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 <http://is.na>(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. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 35879 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0005.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 10546 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0006.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 28869 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0007.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 11088 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0008.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 11192 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230320/43c311d7/attachment-0009.png>
Estimado Juan Manuel Dias Yo siempre prefiero realizar la consulta adecuada a al base de datos. Es más simple. Yo utilizaría un bucle, por ejemplo for, entonces por cada elemento que está en una columna del data Frame (me refiero a excel, sheers, Oracle, postre) para el primer caso, creo una fila en otro data Frame donde tiene id_caso y la palabra correspondiente (una sola), en este caso serían 5 líneas en el nuevo data.frame. Pero, es mi idea, posiblemente hay formas más simples utilizando algún paquete. Resumiendo, creo un nuevo data.frame a partid de un bucle en el primero. Mil formas distintas de hacerlo. Javier Rubén Marcuzzi> El 20 mar. 2023, a las 12:53, juan manuel dias <juamadias en gmail.com> 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.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 <http://is.na/>(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.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.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.png> > > Y así con todos los casos, por ejemplo, si solo respondió "excel", necesitaría que quede así: > > <image.png> > > Estoy intentando hacerlo pero sin resultados! > > Muchas gracias! Juan. > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]