Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema Carlos Ortega
OK. Bien.

El mié, 29 mar 2023 a las 22:20, David Camilo Gomez Medina (<
dcgome...@unal.edu.co>) escribió:

> Listo, gracias.
>
> On Wed, 29 Mar 2023 at 15:19, Carlos Ortega 
> 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 ()
>> 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
>>> 4610   X1 0.4523220
>>> 4710   X2 0.5130199
>>> 4810   X3 0.3362966
>>> 4910   X4 0.5372736
>>> 5010   X5 0.5077318
>>> 5111   X1 0.4055051
>>> 5211   X2 0.4510812
>>> 5311   X3 0.2245734
>>> 5411   X4 0.7682052
>>> 5511   X5 0.3541822
>>> 5612   X1 0.6346173
>>> 5712   X2 0.5956540
>>> 5812   X3 0.3881634
>>> 5912   X4 0.6156253
>>> 6012   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 
 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)
>   yearmonX1X2  X3X4 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.371 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.45617 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  

Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema David Camilo Gomez Medina
Listo, gracias.

On Wed, 29 Mar 2023 at 15:19, Carlos Ortega 
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 ()
> 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
>> 4610   X1 0.4523220
>> 4710   X2 0.5130199
>> 4810   X3 0.3362966
>> 4910   X4 0.5372736
>> 5010   X5 0.5077318
>> 5111   X1 0.4055051
>> 5211   X2 0.4510812
>> 5311   X3 0.2245734
>> 5411   X4 0.7682052
>> 5511   X5 0.3541822
>> 5612   X1 0.6346173
>> 5712   X2 0.5956540
>> 5812   X3 0.3881634
>> 5912   X4 0.6156253
>> 6012   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 
>>> 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)
   yearmonX1X2  X3X4 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.371 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.45617 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
 1010 0.4272948
 1111 0.5197938
 1212 0.3883511

 #

Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema Carlos Ortega
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 ()
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
> 4610   X1 0.4523220
> 4710   X2 0.5130199
> 4810   X3 0.3362966
> 4910   X4 0.5372736
> 5010   X5 0.5077318
> 5111   X1 0.4055051
> 5211   X2 0.4510812
> 5311   X3 0.2245734
> 5411   X4 0.7682052
> 5511   X5 0.3541822
> 5612   X1 0.6346173
> 5712   X2 0.5956540
> 5812   X3 0.3881634
> 5912   X4 0.6156253
> 6012   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 
>> 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)
>>>   yearmonX1X2  X3X4 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.371 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.45617 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
>>> 1010 0.4272948
>>> 1111 0.5197938
>>> 1212 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 
 wrote:


Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema David Camilo Gomez Medina
Muchas gracias Carlos, muy amable.

On Wed, 29 Mar 2023 at 15:18, Carlos Ortega 
wrote:

> 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
> 4610   X1 0.4523220
> 4710   X2 0.5130199
> 4810   X3 0.3362966
> 4910   X4 0.5372736
> 5010   X5 0.5077318
> 5111   X1 0.4055051
> 5211   X2 0.4510812
> 5311   X3 0.2245734
> 5411   X4 0.7682052
> 5511   X5 0.3541822
> 5612   X1 0.6346173
> 5712   X2 0.5956540
> 5812   X3 0.3881634
> 5912   X4 0.6156253
> 6012   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 
>> 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)
>>>   yearmonX1X2  X3X4 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.371 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.45617 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
>>> 1010 0.4272948
>>> 1111 0.5197938
>>> 1212 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 
 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, 

Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema David Camilo Gomez Medina
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 
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)
>   yearmonX1X2  X3X4 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.371 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.45617 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
> 1010 0.4272948
> 1111 0.5197938
> 1212 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 
>> 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 

Re: [R-es] Función aggregate en dataframe

2023-03-29 Por tema David Camilo Gomez Medina
Claro Carlos, gracias, exporté el dataframe a Excel.



On Wed, 29 Mar 2023 at 14:44, Carlos Ortega 
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.


conjunto.xlsx
Description: MS-Excel 2007 spreadsheet
___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es