[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