Comment calculer le décalage par groupe à l’aide de dplyr



Vous pouvez utiliser la syntaxe suivante pour calculer les valeurs décalées par groupe dans R à l’aide du package dplyr :

df %>%
  group_by(var1) %>%
  mutate(lag1_value = lag(var2, n=1, order_by=var1))

Remarque : La fonction mutate() ajoute une nouvelle variable au bloc de données qui contient les valeurs retardées.

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

Exemple : calculer les valeurs décalées par groupe à l’aide de dplyr

Supposons que nous ayons le bloc de données suivant dans R qui montre les ventes réalisées par deux magasins différents au cours de différents jours :

#create data frame
df <- data.frame(store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'),
                 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view data frame
df

  store sales
1     A     7
2     B    12
3     A    10
4     B     9
5     A     9
6     B    11
7     A    18
8     B    23

Nous pouvons utiliser le code suivant pour créer une nouvelle colonne qui affiche les valeurs décalées des ventes pour chaque magasin :

library(dplyr)

#calculate lagged sales by group
df %>%
  group_by(store) %>%
  mutate(lag1_sales = lag(sales, n=1, order_by=store))

# A tibble: 8 x 3
# Groups:   store [2]
  store sales lag1_sales
1 A         7         NA
2 B        12         NA
3 A        10          7
4 B         9         12
5 A         9         10
6 B        11          9
7 A        18          9
8 B        23         11

Voici comment interpréter le résultat :

  • La première valeur de lag1_sales est NA car il n’existe aucune valeur précédente pour les ventes du magasin A.
  • La deuxième valeur de lag1_sales est NA car il n’existe aucune valeur précédente pour les ventes du magasin B.
  • La troisième valeur de lag1_sales est 7 car il s’agit de la valeur précédente des ventes du magasin A.
  • La quatrième valeur de lag1_sales est 12 car il s’agit de la valeur précédente des ventes du magasin B.

Et ainsi de suite.

Notez que vous pouvez également modifier le nombre de décalages utilisés en modifiant la valeur de n dans la fonction lag() .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres calculs courants dans R :

Comment calculer une somme cumulée à l’aide de dplyr
Comment calculer la somme par groupe dans R
Comment calculer la moyenne par groupe dans R

Ajouter un commentaire

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