Verwendung der diff-Funktion in R
Die Berechnung der Differenz zwischen Elementen ist eine grundlegende Operation. Wir können auch die Differenz zwischen aufeinanderfolgenden Elementen einfach berechnen, aber bei großen Datenmengen ist es nicht effizient, dies manuell, Zeile für Zeile, zu erreichen.
In der R-Programmierung berechnet die Funktion diff()
die Differenz zwischen aufeinanderfolgenden Elementen des Vektors, der an die Funktion übergeben wird. Das Endergebnis ist ebenfalls ein Vektor. Ein Beispiel:
x <- c(5,3,4,3,8,9,4,8,1)
diff(x)
[1] -2 1 -1 5 1 -5 4 -7
Wie Sie im obigen Beispiel sehen können, liefert die Funktion diff()
die Differenz zwischen aufeinanderfolgenden Elementen (3 - 5 = -2, 4 - 3 = 1,….). Beachten Sie auch, dass der resultierende Vektor ein Element weniger hat; das liegt daran, dass er die Differenz des letzten Elements nicht berechnen kann.
Wir können auch zwei Parameter zu der Funktion diff()
hinzufügen. Dies sind die Parameter lag
und differences
.
Der Parameter lag
kann den Abstand zwischen den Elementen angeben, deren Differenz berechnet wird. In der Voreinstellung ist er 1. Wenn der Parameter lag
2 ist, berechnet die Funktion diff()
die Differenz zwischen dem ersten und dritten Element, dem zweiten und vierten Element, usw. Das folgende Beispiel soll die Sache verdeutlichen:
diff(x, lag = 2)
[1] -1 0 4 6 -4 -1 -3
Der Parameter differences
wird verwendet, um die Reihenfolge der Differenzen festzulegen. Wir setzen ihn z. B. auf 2; dann wird zuerst die Differenz zwischen den gegebenen Vektorelementen berechnet, dann wird wieder die Differenz aufeinanderfolgender Elemente des resultierenden Vektors berechnet. Der folgende Codeschnipsel soll dies erklären:
diff(x)
[1] -2 1 -1 5 1 -5 4 -7
diff(x, differences = 2)
[1] 3 -2 6 -4 -6 9 -11
Wir können diese beiden Parameter auch gleichzeitig auf einen bestimmten Wert setzen lassen. Zum Beispiel haben wir im folgenden Code lag
auf 2 und differences
auf 2 gesetzt.
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