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

Carlos Ortega co| @end|ng |rom qu@||tyexce||ence@e@
Vie Mar 12 11:48:04 CET 2021


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 using 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 using 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>


Más información sobre la lista de distribución R-help-es