Utilisation de la fonction diff dans R
Le calcul de la différence entre les éléments est une opération fondamentale. Nous pouvons également calculer facilement la différence entre des éléments consécutifs, mais pour d’énormes ensembles de données, il n’est pas efficace de le faire manuellement, ligne par ligne.
En programmation R, la diff()
calcule la différence entre des éléments consécutifs du vecteur, qui est passée à la fonction. Le résultat final est également un vecteur. Par exemple :
x <- c(5,3,4,3,8,9,4,8,1)
diff(x)
[1] -2 1 -1 5 1 -5 4 -7
Comme vous pouvez le voir dans l’exemple ci-dessus, la fonction diff()
renvoie la différence entre des éléments consécutifs (3 - 5 = -2, 4 - 3 = 1,….). Remarquez également que le vecteur résultant a un élément de moins ; c’est parce qu’il ne peut pas calculer la différence du dernier élément.
Nous pouvons également ajouter deux paramètres à la fonction diff()
. Ce sont les paramètres lag
et differences
.
Le paramètre lag
peut spécifier l’écart entre les éléments dont la différence est calculée. Il est de 1 par défaut. Lorsque le paramètre lag
est 2, la fonction diff()
calculera la différence entre le premier et le troisième élément, le deuxième et le quatrième élément, etc. L’exemple suivant permettra de clarifier les choses :
diff(x, lag = 2)
[1] -1 0 4 6 -4 -1 -3
Le paramètre differences
est utilisé pour spécifier l’ordre des différences. Par exemple, nous le mettons à 2 ; il calculera d’abord la différence entre les éléments du vecteur donné, puis il calculera à nouveau la différence des éléments consécutifs du vecteur résultant. L’extrait de code suivant explique cela :
diff(x)
[1] -2 1 -1 5 1 -5 4 -7
diff(x, differences = 2)
[1] 3 -2 6 -4 -6 9 -11
Nous pouvons également faire en sorte que ces deux paramètres soient réglés sur une valeur spécifique à la fois. Par exemple, dans le code ci-dessous, nous avons défini le lag
comme étant 2 et les differences
comme étant 2.
diff(x, differences = 2, lag = 2)
[1] 5 6 -8 -7 1
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn