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



Vous pouvez utiliser la fonction strftime() en base R avec l’argument « %V » pour regrouper les données par semaine dans R.

Cette fonction utilise la syntaxe de base suivante :

df$week_num <- strftime(df$date, format = "%V")

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

Exemple : regrouper les données par semaine dans R

Supposons que nous ayons le bloc de données suivant dans R qui montre les ventes totales d’un article à différentes dates :

#create data frame 
df <- data.frame(date=as.Date(c('1/8/2022', '1/9/2022', '2/10/2022', '2/15/2022',
                                '3/5/2022', '3/22/2022', '3/27/2022'), '%m/%d/%Y'),
                 sales=c(8, 14, 22, 23, 16, 17, 23))

#view data frame
df

        date sales
1 2022-01-08     8
2 2022-01-09    14
3 2022-02-10    22
4 2022-02-15    23
5 2022-03-05    16
6 2022-03-22    17
7 2022-03-27    23

Nous pouvons utiliser le code suivant pour ajouter une colonne qui affiche le numéro de semaine de chaque date :

#add column to show week number
df$week_num <- strftime(df$date, format = "%V")

#view updated data frame
df

        date sales week_num
1 2022-01-08     8       01
2 2022-01-09    14       01
3 2022-02-10    22       06
4 2022-02-15    23       07
5 2022-03-05    16       09
6 2022-03-22    17       12
7 2022-03-27    23       12

Remarque : D’après la documentation, voici comment %V% calcule les numéros de date : « le numéro de semaine de l’année (lundi comme premier jour de la semaine) sous forme de nombre décimal [01,53]. Si la semaine contenant le 1er janvier compte quatre jours ou plus dans la nouvelle année, elle est alors considérée comme la semaine 1. Sinon, c’est la dernière semaine de l’année précédente et la semaine suivante est la semaine 1. »

Une fois que nous avons créé cette nouvelle colonne, nous pouvons regrouper les valeurs en fonction du numéro de semaine.

Par exemple, nous pouvons utiliser le code suivant pour calculer la somme des ventes, regroupées par semaine :

library(dplyr)

#calculate sum of sales, grouped by week
df %>%
  group_by(week_num) %>%
  summarize(total_sales = sum(sales))

# A tibble: 6 x 2
  week_num total_sales
            
1 01                22
2 06                22
3 07                23
4 09                16
5 12                40

À partir du résultat, nous pouvons voir :

  • La somme des ventes au cours de la semaine 1 était de 22 .
  • La somme des ventes au cours de la semaine 6 était de 22 .
  • La somme des ventes au cours de la semaine 7 était de 23 .

Et ainsi de suite.

Nous pouvons également utiliser une autre métrique pour agréger les données.

Par exemple, nous pouvons utiliser le code suivant pour calculer la moyenne des ventes, regroupées par semaine :

library(dplyr)

#calculate mean of sales, grouped by week
df %>%
  group_by(week_num) %>%
  summarize(mean_sales = mean(sales))

# A tibble: 5 x 2
  week_num mean_sales
           
1 01               11
2 06               22
3 07               23
4 09               16
5 12               20

À partir du résultat, nous pouvons voir :

  • La moyenne des ventes au cours de la semaine 1 était de 11 .
  • La moyenne des ventes au cours de la semaine 6 était de 22 .
  • La moyenne des ventes au cours de la semaine 7 était de 23 .

Et ainsi de suite.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment regrouper les données par mois inR
Comment extraire l’année à partir de la date dans R
Comment extraire le mois de la date dans R
Comment trier une trame de données par date dans R

Ajouter un commentaire

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