[R-es] preguntas múltiples y creación de variables
Javier Marcuzzi
j@v|er@ruben@m@rcuzz| @end|ng |rom gm@||@com
Lun Mar 20 23:19:50 CET 2023
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 using 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 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