Cómo agregar datos diarios a mensuales y anuales en R

Puedes opinar sobre este contenido:
  • 0
  • 0
  • 0
  • 0

Actualizado el 7 de mayo de 2021, por Luis Benites.

Ocasionalmente, es posible que desee agregar datos diarios a datos semanales, mensuales o anuales en R.

Este tutorial explica cómo hacerlo fácilmente usando los paquetes lubridate y dplyr .

Ejemplo: datos diarios agregados en R

Suponga que tenemos el siguiente marco de datos en R que muestra las ventas diarias de algún artículo en el transcurso de 100 días consecutivos:

#Haga que este ejemplo sea reproducible
 set.seed (1)
 
#create data frame 
df <- data.frame (date = as.Date (" 2020-12-01 ") + 0:99,
                 ventas = runif (100, 20, 50))

#ver las primeras seis filas
cabeza (df)

        ventas de fecha
1 2020-12-01 27.96526
2 2020-12-02 31.16372
3 2020-12-03 37.18560
4 2020-12-04 47.24623
5 2020-12-05 26.05046
6 2020-12-06 46.95169

Para agregar estos datos, podemos usar la función floor_date () del paquete lubridate que usa la siguiente sintaxis:

floor_date (x, unidad)

dónde:

  • x: un vector de objetos de fecha.
  • unidad: una unidad de tiempo a la que se redondea. Las opciones incluyen segundo, minuto, hora, día, semana, mes, bimestral, trimestre, medio año y año.

Los siguientes fragmentos de código muestran cómo utilizar esta función junto con la group_by () y resume () funciones de la dplyr paquete para encontrar las ventas medias por semana, mes, y año:

Ventas medias por semana

biblioteca (lubridate) 
biblioteca (dplyr)

#fechas redondeadas hasta la semana 
df $ week <- floor_date (df ​​$ date, " week ")

# encontrar las ventas medias por semana
 df%>%
   group_by (semana)%>%
   resumir (media = media (ventas))

# A tibble: 15 x 2
   semana media
        
 1 2020-11-29 33,9
 2 2020-12-06 35,3
 3 2020-12-13 39,0
 4 2020-12-20 34,4
 5 2020-12-27 33,6
 6 2021-01-03 35,9
 7 2021-01-10 37,8
 8 2021-01-17 36,8
 9 2021-01-24 32,8
10 2021-01-31 33,9
11 2021-02-07 34,1
12 14/02/2021 41,6
13 2021-02-21 31,8
14 2021-02-28 35,2
15 2021-03-07 37,1

Ventas medias por mes

biblioteca (lubridate) 
biblioteca (dplyr)

#fechas redondeadas hasta la semana 
df $ mes <- floor_date (df ​​$ fecha, " mes ")

# encontrar las ventas medias por mes
 df%>% 
  group_by (mes)%>% 
  resumir (media =  media (ventas))

# A tibble: 4 x 2
  mes promedio
       
1 2020-12-01 35,3
2 2021-01-01 35,6
3 2021-02-01 35.2
4 2021-03-01 37.0

Ventas medias por año

biblioteca (lubridate) 
biblioteca (dplyr)

# fechas redondeadas hasta la semana 
df $ año <- floor_date (df ​​$ fecha, " año ")

# encontrar las ventas medias por mes
 df%>% 
  group_by (año)%>% 
  resumir (media = media (ventas))

# A tibble: 2 x 2
  año medio
       
1 2020-01-01 35,3
2 2021-01-01 35,7

Tenga en cuenta que elegimos agregar por la media, pero podríamos usar cualquier estadística de resumen que nos gustaría, como la mediana, la moda, el máximo, el mínimo, etc.

Recursos adicionales

Cómo calcular la media por grupo en R
Cómo calcular sumas acumulativas en R
Cómo trazar una serie de tiempo en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

La distancia euclidiana entre dos vectores, A y B, se calcula como: Distancia euclidiana = √ Σ (A i -B…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!