[R-es] Generar variable con valores repetidos por id

Carlos Ortega co| @end|ng |rom qu@||tyexce||ence@e@
Lun Feb 15 23:03:08 CET 2021


Vaya... no incluí la parte del data.frame... para que sea un ejemplo
reproducible...

#----------------



*my_df <- data.frame(                      pais_id = rep(1:38, each = 25),
                    gini = rnorm(25*38)                    )*

library(dplyr)
res_df <- my_df %>%
  group_by(pais_id) %>%
  mutate( gini_avg = mean(gini))
head(res_df)
tail(res_df)

library(data.table)
my_dt <- as.data.table(my_df)
my_dt[ , gini_avg := mean(gini), pais_id]
my_dt
#-----------------

Gracias,
Carlos Ortega
www.qualityexcellence.es


El lun, 15 feb 2021 a las 22:40, Carlos Ortega (<cof using qualityexcellence.es>)
escribió:

> Hola,
>
> Sí, mira un par de alternativas con un data.frame de ejemplo para simular
> el conjunto de datos equivalente al que tienes..
>
> #-------------------------
> library(dplyr)
> res_df <- my_df %>%
>   group_by(pais_id) %>%
>   mutate( gini_avg = mean(gini))
> head(res_df)
> tail(res_df)
>
> library(data.table)
> my_dt <- as.data.table(my_df)
> my_dt[ , gini_avg := mean(gini), pais_id]
> my_dt
> #-------------------------
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El lun, 15 feb 2021 a las 16:59, Rolando Valdez (<rvaldezr using gmail.com>)
> escribió:
>
>> No funciona, solo genera el valor = 1 en las primeras 25 observaciones y
>> NAs en el resto.
>>
>> El dom, 14 de feb. de 2021 a la(s) 22:03, Ivan Corredor castillo (
>> ivangcorredorc using gmail.com) escribió:
>>
>> > Buenos días,
>> > Puedes intentar colocando el índice de las filas para cada país 1:25 y
>> el
>> > índice de la columna 1. Los valores que colocó son de ejemplo, tienes
>> que
>> > buscar el índice de las filas y de las columnas para que le asignes los
>> > valores creados por la función.
>> >
>> > db[1:25, 1]<- within(db, {mgini = ave(gini, id)}
>> >
>> > El dom., 14 de febrero de 2021 9:26 p. m., Rolando Valdez <
>> > rvaldezr using gmail.com> escribió:
>> >
>> >> Estimada comunidad:
>> >>
>> >> Estoy intentando generar una variable con el valor promedio del índice
>> de
>> >> gini en un rango de 25 años para un conjunto de 38 países. Esto en un
>> >> pdata.frame. Sin embargo, necesito que el valor promedio de cada país
>> se
>> >> repita 25 veces en cada uno de estos.
>> >>
>> >> He intentado con la función aggregate tal como sigue:
>> >>
>> >> > db$mgini <- aggregate(db$gini, by = list(db$id), FUN = mean, na.rm =
>> >> TRUE)
>> >> Error in `$<-.data.frame`(x, name, value) :
>> >>   replacement has 38 rows, data has 950
>> >>
>> >> Con este último es que genera un valor para cada país.
>> >>
>> >> Después intenté con la función within, y al parecer sí obtengo el valor
>> >> medio repetido 25 veces en cada país, no obstante, no logro
>> incorporarlo
>> >> en
>> >> el pdata.frame.
>> >>
>> >> > within(db, {mgini = ave(gini, id)})
>> >>
>> >> ¿Alguna sugerencia?
>> >>
>> >> Gracias de antemano.
>> >>
>> >> --
>> >> Rol~
>> >>
>> >>         [[alternative HTML version deleted]]
>> >>
>> >> _______________________________________________
>> >> R-help-es mailing list
>> >> R-help-es using r-project.org
>> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >>
>> >
>>
>> --
>> Rol~
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> 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
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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