Listo, gracias. On Wed, 29 Mar 2023 at 15:19, Carlos Ortega <c...@qualityexcellence.es> wrote:
> Ah... veo que tienes algunos valores nulos... > Entonces para calcular la media, habría que incluir este otro cambio: > > *+ mutate(mes_avg = mean(value, na.rm = TRUE), .by = c(month, vars)) %>%* > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > El mié, 29 mar 2023 a las 22:17, Carlos Ortega (<c...@qualityexcellence.es>) > escribió: > >> Ah... >> Sí, de esta forma... >> >> > resout <- df %>% >> + mutate(year = year(ym(yearmon))) %>% >> + mutate(month = month(ym(yearmon))) %>% >> + select(-year) %>% >> + relocate(month, .after = yearmon) %>% >> + >> >> * pivot_longer( cols = X1:X5, names_to = "vars" ) %>%+ mutate(mes_avg >> = mean(value), .by = c(month, vars)) %>%+ select(month, vars, mes_avg) >> %>%* >> + distinct() %>% >> + as.data.frame >> > resout >> month vars mes_avg >> 1 1 X1 0.5063388 >> 2 1 X2 0.6054863 >> 3 1 X3 0.4747568 >> 4 1 X4 0.6525521 >> 5 1 X5 0.3378098 >> 6 2 X1 0.6480751 >> 7 2 X2 0.3866987 >> 8 2 X3 0.5628610 >> 9 2 X4 0.2965187 >> 10 2 X5 0.5039561 >> 11 3 X1 0.3565034 >> 12 3 X2 0.5595157 >> 13 3 X3 0.4526992 >> 14 3 X4 0.5256429 >> 15 3 X5 0.5396339 >> 16 4 X1 0.3492785 >> 17 4 X2 0.4719472 >> 18 4 X3 0.6069615 >> 19 4 X4 0.5099684 >> 20 4 X5 0.5375129 >> 21 5 X1 0.6083371 >> 22 5 X2 0.6986131 >> 23 5 X3 0.3419662 >> 24 5 X4 0.4950851 >> 25 5 X5 0.5467911 >> 26 6 X1 0.2031233 >> 27 6 X2 0.4891435 >> 28 6 X3 0.3186853 >> 29 6 X4 0.7101540 >> 30 6 X5 0.4964806 >> 31 7 X1 0.4853932 >> 32 7 X2 0.5883874 >> 33 7 X3 0.8781151 >> 34 7 X4 0.4065725 >> 35 7 X5 0.3009754 >> 36 8 X1 0.4974401 >> 37 8 X2 0.6118529 >> 38 8 X3 0.6042984 >> 39 8 X4 0.3386884 >> 40 8 X5 0.6710002 >> 41 9 X1 0.6392356 >> 42 9 X2 0.4150898 >> 43 9 X3 0.5861839 >> 44 9 X4 0.4325483 >> 45 9 X5 0.6310271 >> 46 10 X1 0.4523220 >> 47 10 X2 0.5130199 >> 48 10 X3 0.3362966 >> 49 10 X4 0.5372736 >> 50 10 X5 0.5077318 >> 51 11 X1 0.4055051 >> 52 11 X2 0.4510812 >> 53 11 X3 0.2245734 >> 54 11 X4 0.7682052 >> 55 11 X5 0.3541822 >> 56 12 X1 0.6346173 >> 57 12 X2 0.5956540 >> 58 12 X3 0.3881634 >> 59 12 X4 0.6156253 >> 60 12 X5 0.6732854 >> > >> >> #--------- >> >> Gracias, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> El mié, 29 mar 2023 a las 22:12, David Camilo Gomez Medina (< >> dcgome...@unal.edu.co>) escribió: >> >>> Muchísimas gracias Carlos, aunque yo quiero conservar las columnas. Por >>> ejemplo, tú creaste información del año 2019 a 2022, para la columna X1 >>> quiero calcular el promedio de enero para esos años y así con las demás >>> columnas. ¿Cómo podría cambiar tu código? >>> >>> On Wed, 29 Mar 2023 at 15:05, Carlos Ortega <c...@qualityexcellence.es> >>> wrote: >>> >>>> Ah, gracias.. >>>> >>>> Me he creado uno de forma sintética... >>>> Esta es una forma... >>>> >>>> #--------------------------------- >>>> > library(dplyr) >>>> > library(tidyr) >>>> > library(lubridate) >>>> > >>>> > >>>> > crear_data_frame <- function(anios_inicio, anios_fin) { >>>> + anios_meses <- expand.grid(Year = anios_inicio:anios_fin, Month = >>>> 1:12) >>>> + anios_meses$yearmon <- paste0(anios_meses$Year, "-", >>>> sprintf("%02d", anios_meses$Month)) >>>> + vars <- replicate(5, runif(nrow(anios_meses))) >>>> + data.frame(anios_meses, vars, stringsAsFactors = FALSE) %>% >>>> + select(-Year, -Month) %>% >>>> + arrange(yearmon) >>>> + } >>>> > >>>> > df <- crear_data_frame(2019, 2022) >>>> > >>>> > head(df) >>>> yearmon X1 X2 X3 X4 X5 >>>> 1 2019-01 0.2783405 0.1556831 0.007564986 0.9981701 0.35200632 >>>> 2 2019-02 0.3906244 0.1525354 0.794696565 0.6935012 0.15611665 >>>> 3 2019-03 0.3607439 0.2350400 0.208026463 0.1175302 0.84753470 >>>> 4 2019-04 0.7787032 0.3713333 0.697207166 0.3701457 0.04013776 >>>> 5 2019-05 0.4973347 0.6898472 0.603442922 0.5696876 0.63328772 >>>> 6 2019-06 0.5392983 0.9604180 0.456174444 0.7767546 0.62486765 >>>> > >>>> > resout <- df %>% >>>> + mutate(year = year(ym(yearmon))) %>% >>>> + mutate(month = month(ym(yearmon))) %>% >>>> + select(-year) %>% >>>> + relocate(month, .after = yearmon) %>% >>>> + pivot_longer( cols = X1:X5) %>% >>>> + mutate(mes_avg = mean(value), .by = month) %>% >>>> + select(month, mes_avg) %>% >>>> + distinct() %>% >>>> + as.data.frame >>>> > resout >>>> month mes_avg >>>> 1 1 0.4305554 >>>> 2 2 0.4485030 >>>> 3 3 0.4451672 >>>> 4 4 0.4101606 >>>> 5 5 0.4715812 >>>> 6 6 0.5428447 >>>> 7 7 0.5350282 >>>> 8 8 0.4792279 >>>> 9 9 0.5052422 >>>> 10 10 0.4272948 >>>> 11 11 0.5197938 >>>> 12 12 0.3883511 >>>> >>>> #------------------------------------ >>>> >>>> El mié, 29 mar 2023 a las 21:54, David Camilo Gomez Medina (< >>>> dcgome...@unal.edu.co>) escribió: >>>> >>>>> Claro Carlos, gracias, exporté el dataframe a Excel. >>>>> >>>>> >>>>> >>>>> On Wed, 29 Mar 2023 at 14:44, Carlos Ortega <c...@qualityexcellence.es> >>>>> wrote: >>>>> >>>>>> Hola, >>>>>> >>>>>> Puedes pasar una pequeña muestra del conjunto para darte la >>>>>> solución... >>>>>> >>>>>> Gracias, >>>>>> Carlos Ortega >>>>>> www.qualityexcellence.es >>>>>> >>>>>> El mié, 29 mar 2023 a las 21:38, David Camilo Gomez Medina (< >>>>>> dcgome...@unal.edu.co>) escribió: >>>>>> >>>>>>> Buen día a todos, >>>>>>> >>>>>>> Tengo un dataframe donde está almacenada la información por año y >>>>>>> mes, deseo calcular el promedio de todos los meses, es decir, obtener el >>>>>>> promedio mensual multianual de cada columna. He intentado realizarlo >>>>>>> con la >>>>>>> función aggregate, pero no sé cómo seleccionar solamente el mes. Por >>>>>>> ejemplo, coger solo el mes de enero ('01') de cada año y promediarlo. >>>>>>> >>>>>>> Quedo muy atento, muchas gracias. >>>>>>> >>>>>>> [image: image.png] >>>>>>> >>>>>>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos >>>>>>> son confidenciales y de uso exclusivo de la Universidad Nacional de >>>>>>> Colombia. Se encuentran dirigidos sólo para el uso del destinatario al >>>>>>> cual >>>>>>> van enviados. La reproducción, lectura y/o copia se encuentran >>>>>>> prohibidas a >>>>>>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha >>>>>>> recibido por error, infórmenos y elimínelo de su correo. Los Datos >>>>>>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra >>>>>>> Política de Datos Personales que podrá consultar en la página web >>>>>>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y >>>>>>> cualquier otro tipo de dato contenido en este correo electrónico, no >>>>>>> relacionados con la actividad de la Universidad Nacional de Colombia, se >>>>>>> entenderá como personales y de ninguna manera son avaladas por la >>>>>>> Universidad. >>>>>>> _______________________________________________ >>>>>>> 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 >>>>>> >>>>> >>>>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos >>>>> son confidenciales y de uso exclusivo de la Universidad Nacional de >>>>> Colombia. Se encuentran dirigidos sólo para el uso del destinatario al >>>>> cual >>>>> van enviados. La reproducción, lectura y/o copia se encuentran prohibidas >>>>> a >>>>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha >>>>> recibido por error, infórmenos y elimínelo de su correo. Los Datos >>>>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra >>>>> Política de Datos Personales que podrá consultar en la página web >>>>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y >>>>> cualquier otro tipo de dato contenido en este correo electrónico, no >>>>> relacionados con la actividad de la Universidad Nacional de Colombia, se >>>>> entenderá como personales y de ninguna manera son avaladas por la >>>>> Universidad. >>>>> >>>> >>>> >>>> -- >>>> Saludos, >>>> Carlos Ortega >>>> www.qualityexcellence.es >>>> >>> >>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos son >>> confidenciales y de uso exclusivo de la Universidad Nacional de Colombia. >>> Se encuentran dirigidos sólo para el uso del destinatario al cual van >>> enviados. La reproducción, lectura y/o copia se encuentran prohibidas a >>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha >>> recibido por error, infórmenos y elimínelo de su correo. Los Datos >>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra >>> Política de Datos Personales que podrá consultar en la página web >>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y cualquier >>> otro tipo de dato contenido en este correo electrónico, no relacionados con >>> la actividad de la Universidad Nacional de Colombia, se entenderá como >>> personales y de ninguna manera son avaladas por la Universidad. >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > -- *Aviso legal:* El contenido de este mensaje y los archivos adjuntos son confidenciales y de uso exclusivo de la Universidad Nacional de Colombia. Se encuentran dirigidos sólo para el uso del destinatario al cual van enviados. La reproducción, lectura y/o copia se encuentran prohibidas a cualquier persona diferente a este y puede ser ilegal. Si usted lo ha recibido por error, infórmenos y elimínelo de su correo. Los Datos Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra Política de Datos Personales que podrá consultar en la página web www.unal.edu.co <http://www.unal.edu.co/>.* *Las opiniones, informaciones, conclusiones y cualquier otro tipo de dato contenido en este correo electrónico, no relacionados con la actividad de la Universidad Nacional de Colombia, se entenderá como personales y de ninguna manera son avaladas por la Universidad.
_______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es