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

2021-03-12 Por tema juan manuel dias
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 ()
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 ()
> escribió:
>
>> 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 ()
>> 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@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2021-03-12 Por tema juan manuel dias
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 ()
escribió:

> 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 ()
> 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@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2021-03-12 Por tema Carlos Ortega
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 ()
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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2021-03-12 Por tema Javier Marcuzzi
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 ()
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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es