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]]