Re: [R-es] Agrupar dummy's en otra variable.
Muchas gracias, Carlos! El código que pasaste resuelve lo que tenía que hacer! Saludos, Juan. El vie, 12 mar 2021 a las 13:06, juan manuel dias () escribió: > Muchas gracias por las respuestas! Voy a probar lo que pasó Carlos y luego > les cuento. > Respecto a lo que plantea Rubén, entiendo lo de cáncer y neoplasia...pero > para este estudio puntual ese problema de nomenclatura no sería un problema > por el momento, las agrupaciones son criterios establecidos por una parte > del equipo de investigación (entiendo que ni siquiera están usando CIE10). > Desde el lugar que a mí me toca soy consciente que R no soluciona > problemas de nomenclatura médica. Muchas gracias de todas formas! > Saludos, Juan. > > > El vie, 12 mar 2021 a las 7:48, Carlos Ortega () > escribió: > >> Hola, >> >> Esta podría ser una forma... >> >> #-- >> library(dplyr) >> library(tidyr) >> library(data.table) >> >> datin <- fread('base_enfermedades_dummy.csv') >> >> #Demencia, Cáncer, Enfermedad Cardíaca, Enfermedad pulmonar y Diabetes >> >> to_keep <- c('paciente', 'Demencia', 'Cáncer', 'Enfermedad Cardíaca', >> 'Enfermedad Pulmonar' , 'Diabetes') >> to_rest <- setdiff(names(datin), to_keep) >> >> datin_rel <- datin %>% relocate(all_of(to_keep), .before = >> all_of(to_rest)) >> datinnew <- datin_rel >> datrest <- datin_rel[, (length(to_keep)+1):ncol(datin_rel)] >> >> # Conseguir columna "Otros" >> datinnew$sum_keep <- rowSums(datin_rel[, 2:length(to_keep)]) >> datinnew$sum_rest <- rowSums(datin_rel[, >> (length(to_keep)+1):ncol(datin_rel)]) >> datinnew$Otros <- ifelse(datinnew$sum_rest > 0, 1, 0) >> >> #--- Conseguir columna "Enfermedades_otras" >> datinnew$Enfermedades_otras <- apply( datrest, 1, >> function(u) paste( names(which(u > >> 0)), collapse = "," ) ) >> >> #-- >> >> Gracias, >> Carlos Ortega >> www.qualityexcellence.es >> >> El jue, 11 mar 2021 a las 20:03, juan manuel dias () >> escribió: >> >>> Hola Estimados/as, >>> >>> >>> >>> Hace unos días consulté cómo generar variables dummy cuándo las opciones >>> de respuesta están cargadas en una misma columna/variable y separadas por >>> una coma “,”. >>> >>> >>> >>> Tenía esto: >>> >>> [image: image.png] >>> >>> >>> >>> Y debía generar como primer paso esto: >>> >>> >>> >>> ab<-base %>% >>> >>> separate_rows(enfermedad, sep = ",") %>% >>> >>> mutate(enfermedad = str_squish(enfermedad)) >>> >>> >>> >>> [image: image.png] >>> >>> >>> Y finalmente obtener como resultado las dummy: >>> >>> >>> >>> ab<-base %>% >>> >>> separate_rows(enfermedad, sep = ",") %>% >>> >>> mutate(enfermedad = str_squish(enfermedad), # Para quitar los espacios >>> en blanco indeseados >>> >>> id = 1) %>% >>> >>> spread(key = enfermedad, value = id) >>> >>> >>> >>> ab[is.na(ab)] <- 0 >>> >>> >>> write.csv(ab,file='base_enfermedades_dummy.csv') >>> >>> >>> [image: image.png] >>> >>> >>> >>> >>> Actualmente estoy necesitando lo siguiente: conservar las variables >>> *Demencia*, *Cáncer*, *Enfermedad Cardíaca*, *Enfermedad pulmonar* y >>> *Diabetes* y al resto de las variables/enfermedades agruparlas en una >>> nueva variable “otros”, que sea 1 ó 0 si el caso/paciente tiene 1 en >>> cualquiera de las enfermedades que no son las que menciono arriba. >>> >>> >>> Asimismo, necesito generar una nueva variable "*Enfermedades_otras*" >>> donde figuren cuáles son las enfermedades que mencionó el paciente en >>> otros, y que estén separadas por una coma. >>> >>> >>> >>> Adjunto la base en csv (*base_enfermedades_dummy) *y en el excel ( >>> *Ejemplo_agrupar_en_otros*) dejo un ejemplo de lo que intento hacer. >>> >>> >>> Muchas gracias! Juan. >>> >>> >>> ___ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Agrupar dummy's en otra variable.
Muchas gracias por las respuestas! Voy a probar lo que pasó Carlos y luego les cuento. Respecto a lo que plantea Rubén, entiendo lo de cáncer y neoplasia...pero para este estudio puntual ese problema de nomenclatura no sería un problema por el momento, las agrupaciones son criterios establecidos por una parte del equipo de investigación (entiendo que ni siquiera están usando CIE10). Desde el lugar que a mí me toca soy consciente que R no soluciona problemas de nomenclatura médica. Muchas gracias de todas formas! Saludos, Juan. El vie, 12 mar 2021 a las 7:48, Carlos Ortega () escribió: > Hola, > > Esta podría ser una forma... > > #-- > library(dplyr) > library(tidyr) > library(data.table) > > datin <- fread('base_enfermedades_dummy.csv') > > #Demencia, Cáncer, Enfermedad Cardíaca, Enfermedad pulmonar y Diabetes > > to_keep <- c('paciente', 'Demencia', 'Cáncer', 'Enfermedad Cardíaca', > 'Enfermedad Pulmonar' , 'Diabetes') > to_rest <- setdiff(names(datin), to_keep) > > datin_rel <- datin %>% relocate(all_of(to_keep), .before = all_of(to_rest)) > datinnew <- datin_rel > datrest <- datin_rel[, (length(to_keep)+1):ncol(datin_rel)] > > # Conseguir columna "Otros" > datinnew$sum_keep <- rowSums(datin_rel[, 2:length(to_keep)]) > datinnew$sum_rest <- rowSums(datin_rel[, > (length(to_keep)+1):ncol(datin_rel)]) > datinnew$Otros <- ifelse(datinnew$sum_rest > 0, 1, 0) > > #--- Conseguir columna "Enfermedades_otras" > datinnew$Enfermedades_otras <- apply( datrest, 1, > function(u) paste( names(which(u > > 0)), collapse = "," ) ) > > #-- > > Gracias, > Carlos Ortega > www.qualityexcellence.es > > El jue, 11 mar 2021 a las 20:03, juan manuel dias () > escribió: > >> Hola Estimados/as, >> >> >> >> Hace unos días consulté cómo generar variables dummy cuándo las opciones >> de respuesta están cargadas en una misma columna/variable y separadas por >> una coma “,”. >> >> >> >> Tenía esto: >> >> [image: image.png] >> >> >> >> Y debía generar como primer paso esto: >> >> >> >> ab<-base %>% >> >> separate_rows(enfermedad, sep = ",") %>% >> >> mutate(enfermedad = str_squish(enfermedad)) >> >> >> >> [image: image.png] >> >> >> Y finalmente obtener como resultado las dummy: >> >> >> >> ab<-base %>% >> >> separate_rows(enfermedad, sep = ",") %>% >> >> mutate(enfermedad = str_squish(enfermedad), # Para quitar los espacios >> en blanco indeseados >> >> id = 1) %>% >> >> spread(key = enfermedad, value = id) >> >> >> >> ab[is.na(ab)] <- 0 >> >> >> write.csv(ab,file='base_enfermedades_dummy.csv') >> >> >> [image: image.png] >> >> >> >> >> Actualmente estoy necesitando lo siguiente: conservar las variables >> *Demencia*, *Cáncer*, *Enfermedad Cardíaca*, *Enfermedad pulmonar* y >> *Diabetes* y al resto de las variables/enfermedades agruparlas en una >> nueva variable “otros”, que sea 1 ó 0 si el caso/paciente tiene 1 en >> cualquiera de las enfermedades que no son las que menciono arriba. >> >> >> Asimismo, necesito generar una nueva variable "*Enfermedades_otras*" >> donde figuren cuáles son las enfermedades que mencionó el paciente en >> otros, y que estén separadas por una coma. >> >> >> >> Adjunto la base en csv (*base_enfermedades_dummy) *y en el excel ( >> *Ejemplo_agrupar_en_otros*) dejo un ejemplo de lo que intento hacer. >> >> >> Muchas gracias! Juan. >> >> >> ___ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Agrupar dummy's en otra variable.
Hola, Esta podría ser una forma... #-- library(dplyr) library(tidyr) library(data.table) datin <- fread('base_enfermedades_dummy.csv') #Demencia, Cáncer, Enfermedad Cardíaca, Enfermedad pulmonar y Diabetes to_keep <- c('paciente', 'Demencia', 'Cáncer', 'Enfermedad Cardíaca', 'Enfermedad Pulmonar' , 'Diabetes') to_rest <- setdiff(names(datin), to_keep) datin_rel <- datin %>% relocate(all_of(to_keep), .before = all_of(to_rest)) datinnew <- datin_rel datrest <- datin_rel[, (length(to_keep)+1):ncol(datin_rel)] # Conseguir columna "Otros" datinnew$sum_keep <- rowSums(datin_rel[, 2:length(to_keep)]) datinnew$sum_rest <- rowSums(datin_rel[, (length(to_keep)+1):ncol(datin_rel)]) datinnew$Otros <- ifelse(datinnew$sum_rest > 0, 1, 0) #--- Conseguir columna "Enfermedades_otras" datinnew$Enfermedades_otras <- apply( datrest, 1, function(u) paste( names(which(u > 0)), collapse = "," ) ) #-- Gracias, Carlos Ortega www.qualityexcellence.es El jue, 11 mar 2021 a las 20:03, juan manuel dias () escribió: > Hola Estimados/as, > > > > Hace unos días consulté cómo generar variables dummy cuándo las opciones > de respuesta están cargadas en una misma columna/variable y separadas por > una coma “,”. > > > > Tenía esto: > > [image: image.png] > > > > Y debía generar como primer paso esto: > > > > ab<-base %>% > > separate_rows(enfermedad, sep = ",") %>% > > mutate(enfermedad = str_squish(enfermedad)) > > > > [image: image.png] > > > Y finalmente obtener como resultado las dummy: > > > > ab<-base %>% > > separate_rows(enfermedad, sep = ",") %>% > > mutate(enfermedad = str_squish(enfermedad), # Para quitar los espacios > en blanco indeseados > > id = 1) %>% > > spread(key = enfermedad, value = id) > > > > ab[is.na(ab)] <- 0 > > > write.csv(ab,file='base_enfermedades_dummy.csv') > > > [image: image.png] > > > > > Actualmente estoy necesitando lo siguiente: conservar las variables > *Demencia*, *Cáncer*, *Enfermedad Cardíaca*, *Enfermedad pulmonar* y > *Diabetes* y al resto de las variables/enfermedades agruparlas en una > nueva variable “otros”, que sea 1 ó 0 si el caso/paciente tiene 1 en > cualquiera de las enfermedades que no son las que menciono arriba. > > > Asimismo, necesito generar una nueva variable "*Enfermedades_otras*" > donde figuren cuáles son las enfermedades que mencionó el paciente en > otros, y que estén separadas por una coma. > > > > Adjunto la base en csv (*base_enfermedades_dummy) *y en el excel ( > *Ejemplo_agrupar_en_otros*) dejo un ejemplo de lo que intento hacer. > > > Muchas gracias! Juan. > > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Agrupar dummy's en otra variable.
Estimado Juan Manuel Días Yo tengo experiencia en acomodar enfermedades para analizar en R. Nunca busque en R una función para ordenar enfermedades, por ejemplo, en sus datos supongamos que aparece neoplasia, esto hace un conflicto con cáncer. Si los datos ya están almacenados en esa forma, lo más sano es colocar a mano, luego buscar, crear listas.Debe conocer los datos y que significan, R no solucionará posibles problemas de nomenclatura médica, pero si los ordenará o desordenará rapidísimo si no tiene un cuidado artesanal, claro, complicado si son miles. Javier Rubén Marcuzzi El jue, 11 mar 2021 a las 16:03, juan manuel dias () escribió: > Hola Estimados/as, > > > > Hace unos días consulté cómo generar variables dummy cuándo las opciones > de respuesta están cargadas en una misma columna/variable y separadas por > una coma “,”. > > > > Tenía esto: > > [image: image.png] > > > > Y debía generar como primer paso esto: > > > > ab<-base %>% > > separate_rows(enfermedad, sep = ",") %>% > > mutate(enfermedad = str_squish(enfermedad)) > > > > [image: image.png] > > > Y finalmente obtener como resultado las dummy: > > > > ab<-base %>% > > separate_rows(enfermedad, sep = ",") %>% > > mutate(enfermedad = str_squish(enfermedad), # Para quitar los espacios > en blanco indeseados > > id = 1) %>% > > spread(key = enfermedad, value = id) > > > > ab[is.na(ab)] <- 0 > > > write.csv(ab,file='base_enfermedades_dummy.csv') > > > [image: image.png] > > > > > Actualmente estoy necesitando lo siguiente: conservar las variables > *Demencia*, *Cáncer*, *Enfermedad Cardíaca*, *Enfermedad pulmonar* y > *Diabetes* y al resto de las variables/enfermedades agruparlas en una > nueva variable “otros”, que sea 1 ó 0 si el caso/paciente tiene 1 en > cualquiera de las enfermedades que no son las que menciono arriba. > > > Asimismo, necesito generar una nueva variable "*Enfermedades_otras*" > donde figuren cuáles son las enfermedades que mencionó el paciente en > otros, y que estén separadas por una coma. > > > > Adjunto la base en csv (*base_enfermedades_dummy) *y en el excel ( > *Ejemplo_agrupar_en_otros*) dejo un ejemplo de lo que intento hacer. > > > Muchas gracias! Juan. > > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es