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 (<c...@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 (<rvald...@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 ( >> ivangcorred...@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 < >> > rvald...@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@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@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]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es