[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 (<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>