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. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 22240 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0003.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 26712 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0004.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 23144 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0005.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: Ejemplo_agrupar_en_otros.xlsx Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Size: 11149 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0001.xlsx> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: base_enfermedades_dummy.csv Type: application/vnd.ms-excel Size: 9470 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210311/1a55f732/attachment-0001.xlb>
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 (<juamadias en gmail.com>) 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/06ede248/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 22240 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/06ede248/attachment-0003.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 26712 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/06ede248/attachment-0004.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 23144 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/06ede248/attachment-0005.png>
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 (<juamadias en gmail.com>) 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/4fe0008f/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 22240 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/4fe0008f/attachment-0003.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 26712 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/4fe0008f/attachment-0004.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 23144 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/4fe0008f/attachment-0005.png>