kendy Boisrond
2021-Feb-28 14:39 UTC
[R-es] HELP!! Expansión de variables en una base de datos con ID duplicados
Hola Comunidad, Por favor necesito su ayuda: Se trata de una base, donde cada "ID" representa una vivienda única, pero por lo que puede haber más visitas en una misma vivienda, los "ID" están duplicados. La base visitas es de dimensión: 98692 x 52 (ID duplicados) y la base vivienda tendría una dimensión 29866 x 52 (ID únicos). A partir de la base "visitas", necesito sacar todos los "ID" únicos de la última visita en cada vivienda, y pude hacerlo con ese comando: Base1<- subset(Base_Visitas %>% group_by(enc_idr) %>% summarise(NRO_VISITA = max(NRO_VISITA))) dim(Base1) [1] 29866 2 Sin embargo, necesito que me lo expande para todas las 52 variables para así realizar otro análisis... Llegué hasta aquí. ¿Me pueden ayudar a expandirla para todas las variables, por favor? Muchas gracias!! -- *Kendy B.* [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2021-Feb-28 14:56 UTC
[R-es] HELP!! Expansión de variables en una base de datos con ID duplicados
Hola, ¿qué tal? En seudocódigo: - Aplicas rank sobre -NRO_VISITA por ID (usando group_by + mutate). - Te quedas con el rank == 1. Un saludo, Carlos J. Gil Bellosta http://www El dom, 28 feb 2021 a las 15:38, kendy Boisrond (<kboisrond.uarcis en gmail.com>) escribió:> Hola Comunidad, > > Por favor necesito su ayuda: > > Se trata de una base, donde cada "ID" representa una vivienda única, pero > por lo que puede haber más visitas en una misma vivienda, los "ID" están > duplicados. > La base visitas es de dimensión: 98692 x 52 (ID duplicados) > y la base vivienda tendría una dimensión 29866 x 52 (ID únicos). > > A partir de la base "visitas", necesito sacar todos los "ID" únicos de la > última visita en cada vivienda, y pude hacerlo con ese comando: > > Base1<- subset(Base_Visitas %>% group_by(enc_idr) %>% summarise(NRO_VISITA > = max(NRO_VISITA))) > dim(Base1) > > [1] 29866 2 > > Sin embargo, necesito que me lo expande para todas las 52 variables para > así realizar otro análisis... Llegué hasta aquí. ¿Me pueden ayudar a > expandirla para todas las variables, por favor? > Muchas gracias!! > > > > -- > *Kendy B.* > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Carlos Ortega
2021-Feb-28 17:22 UTC
[R-es] HELP!! Expansión de variables en una base de datos con ID duplicados
Hola, Otra alternativa es la siguiente usando data.table. En el ejemplo genero/incluyo un pequeño dataset para reproducir el caso... #------------------------------ library(data.table) set.seed(10) DT <- data.table( Id = sample(1:10, 100, replace = TRUE), Nro_visita= sample(1:10, 100, replace = TRUE), X = rnorm(100), Y = rnorm(100), Z = rnorm(100) ) #--- Convertir tu data.frame a data.table # DT <- as.data.frame(tu_df) #--- Ordeno el data.table por ID y por nro_visita en orden decreciente. setorder(DT, Id, -Nro_visita) #--- Me quedo solo con el primer elemento de cada Id. Que es la última visita res_dt <- DT[ , .SD[1], by = Id] res_dt #------------------------ Gracias, Carlos Ortega www.qualityexcellence.es El dom, 28 feb 2021 a las 15:38, kendy Boisrond (<kboisrond.uarcis en gmail.com>) escribió:> Hola Comunidad, > > Por favor necesito su ayuda: > > Se trata de una base, donde cada "ID" representa una vivienda única, pero > por lo que puede haber más visitas en una misma vivienda, los "ID" están > duplicados. > La base visitas es de dimensión: 98692 x 52 (ID duplicados) > y la base vivienda tendría una dimensión 29866 x 52 (ID únicos). > > A partir de la base "visitas", necesito sacar todos los "ID" únicos de la > última visita en cada vivienda, y pude hacerlo con ese comando: > > Base1<- subset(Base_Visitas %>% group_by(enc_idr) %>% summarise(NRO_VISITA > = max(NRO_VISITA))) > dim(Base1) > > [1] 29866 2 > > Sin embargo, necesito que me lo expande para todas las 52 variables para > así realizar otro análisis... Llegué hasta aquí. ¿Me pueden ayudar a > expandirla para todas las variables, por favor? > Muchas gracias!! > > > > -- > *Kendy B.* > > [[alternative HTML version deleted]] > > _______________________________________________ > 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 [[alternative HTML version deleted]]
kendy Boisrond
2021-Mar-01 12:31 UTC
[R-es] HELP!! Expansión de variables en una base de datos con ID duplicados
Hola Carlos, Le agradezco mucho por la ayuda, todo está perfecto con estos códigos... Y con el ejemplo, me queda muy claro, se pasó con esa mano amiga!! Una vez más, muchas gracias comunidad. Saludos, El dom, 28 feb 2021 a las 14:22, Carlos Ortega (<cof en qualityexcellence.es>) escribió:> Hola, > > Otra alternativa es la siguiente usando data.table. > En el ejemplo genero/incluyo un pequeño dataset para reproducir el caso... > > #------------------------------ > library(data.table) > set.seed(10) > DT <- data.table( > Id = sample(1:10, 100, replace = TRUE), > Nro_visita= sample(1:10, 100, replace = TRUE), > X = rnorm(100), > Y = rnorm(100), > Z = rnorm(100) > ) > > #--- Convertir tu data.frame a data.table > # DT <- as.data.frame(tu_df) > > #--- Ordeno el data.table por ID y por nro_visita en orden decreciente. > setorder(DT, Id, -Nro_visita) > #--- Me quedo solo con el primer elemento de cada Id. Que es la última > visita > res_dt <- DT[ , .SD[1], by = Id] > res_dt > > #------------------------ > > Gracias, > Carlos Ortega > www.qualityexcellence.es > > El dom, 28 feb 2021 a las 15:38, kendy Boisrond (< > kboisrond.uarcis en gmail.com>) escribió: > >> Hola Comunidad, >> >> Por favor necesito su ayuda: >> >> Se trata de una base, donde cada "ID" representa una vivienda única, pero >> por lo que puede haber más visitas en una misma vivienda, los "ID" están >> duplicados. >> La base visitas es de dimensión: 98692 x 52 (ID duplicados) >> y la base vivienda tendría una dimensión 29866 x 52 (ID únicos). >> >> A partir de la base "visitas", necesito sacar todos los "ID" únicos de la >> última visita en cada vivienda, y pude hacerlo con ese comando: >> >> Base1<- subset(Base_Visitas %>% group_by(enc_idr) %>% summarise(NRO_VISITA >> = max(NRO_VISITA))) >> dim(Base1) >> >> [1] 29866 2 >> >> Sin embargo, necesito que me lo expande para todas las 52 variables para >> así realizar otro análisis... Llegué hasta aquí. ¿Me pueden ayudar a >> expandirla para todas las variables, por favor? >> Muchas gracias!! >> >> >> >> -- >> *Kendy B.* >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> 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 >-- *Kendy Boisrond* MSc. in Economics MSc. in Applied Statistics Graduate in Business Administration [[alternative HTML version deleted]]