Skip to content

[R-es] Agrupar dummy's en otra variable.

5 messages · juan manuel dias, Javier Marcuzzi, Carlos Ortega

#
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ó:
------------ 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ó:

  
    
#
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 (<cof en qualityexcellence.es>)
escribió:
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/59f311df/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/59f311df/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/59f311df/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/59f311df/attachment-0005.png>
#
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 (<juamadias en gmail.com>)
escribió:
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210312/e9861457/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/e9861457/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/e9861457/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/e9861457/attachment-0005.png>