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