Comment regrouper les données par heure dans R (avec exemple)



Vous pouvez utiliser la syntaxe suivante pour regrouper les données par heure et effectuer une agrégation dans R :

library(dplyr)
library(lubridate)

#group by hours in time column and calculate sum of sales
df %>%
  group_by(time=floor_date(time, '1 hour')) %>%
  summarize(sum_sales=sum(sales))

Cet exemple particulier regroupe les valeurs par heure dans une colonne appelée heure , puis calcule la somme des valeurs dans la colonne ventes pour chaque heure.

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : regrouper les données par heure dans R

Supposons que nous disposions du bloc de données suivant qui montre le nombre de ventes réalisées à différents moments de la journée pour un magasin :

#create data frame
df <- data.frame(time=as.POSIXct(c('2022-01-01 01:14:00', '2022-01-01 01:24:15',
                                 '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                                 '2022-01-01 04:05:10', '2022-01-01 05:35:09')),
                 sales=c(18, 20, 15, 14, 10, 9))

#view data frame
df

                 time sales
1 2022-01-01 01:14:00    18
2 2022-01-01 01:24:15    20
3 2022-01-01 02:52:19    15
4 2022-01-01 02:54:00    14
5 2022-01-01 04:05:10    10
6 2022-01-01 05:35:09     9

Nous pouvons utiliser la syntaxe suivante pour regrouper la colonne de temps par heures et calculer la somme des ventes pour chaque heure :

library(dplyr)
library(lubridate)

#group by hours in time column and calculate sum of sales
df %>%
  group_by(time=floor_date(time, '1 hour')) %>%
  summarize(sum_sales=sum(sales))

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 4 x 2
  time                sum_sales
                    
1 2022-01-01 01:00:00        38
2 2022-01-01 02:00:00        29
3 2022-01-01 04:00:00        10
4 2022-01-01 05:00:00         9

À partir du résultat, nous pouvons voir :

  • Au total, 38 ventes ont été réalisées au cours de la première heure.
  • Au total, 29 ventes ont été réalisées au cours de la deuxième heure.
  • Au total, 10 ventes ont été réalisées au cours de la quatrième heure.
  • Au total, 9 ventes ont été réalisées au cours de la cinquième heure.

Notez que nous pouvons également effectuer une autre agrégation.

Par exemple, nous pourrions calculer le nombre moyen de ventes par heure :

library(dplyr)
library(lubridate)

#group by hours in time column and calculate mean of sales
df %>%
  group_by(time=floor_date(time, '1 hour')) %>%
  summarize(mean_sales=mean(sales))

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 4 x 2
  time                mean_sales
                     
1 2022-01-01 01:00:00       19  
2 2022-01-01 02:00:00       14.5
3 2022-01-01 04:00:00       10  
4 2022-01-01 05:00:00        9  

À partir du résultat, nous pouvons voir :

  • Les ventes moyennes réalisées dans la première heure étaient de 19 .
  • La moyenne des ventes réalisées dans la deuxième heure était de 14,5 .
  • Les ventes moyennes réalisées dans la quatrième heure étaient de 10 .
  • Les ventes moyennes réalisées dans la cinquième heure étaient de 9 .

N’hésitez pas à regrouper votre propre bloc de données par heure et à calculer toute métrique spécifique que vous souhaitez en modifiant la métrique dans la fonction summary() .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :

Comment regrouper les données par mois dans R
Comment regrouper les données par semaine dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *