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>