Wat doet de functie diff() in R?

Ik begrijp niet wat de functie diff()in R doet. Zie dit voorbeeld:

temp = c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10)
 diff(temp)

De bovenstaande code produceert de volgende uitvoer:

[1] -9  0  0  0  0  0  1 -1  0  0  0  0  0  0  2  7

Wat is de definitie van deze functie?


Antwoord 1, autoriteit 100%

De functie berekent de verschillen tussen alle opeenvolgende waarden van een vector. Voor uw voorbeeldvector zijn de verschillen:

1 - 10 = -9
 1 -  1 =  0
 1 -  1 =  0
.
.
.
 3 -  1 =  2
10 -  3 =  7

Met het argument differenceskun je de volgorde van de verschillen specificeren.

Bijvoorbeeld het commando

diff(temp, differences = 2) 
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5

produceert hetzelfde resultaat als

diff(diff(temp))
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5

Daarom geeft het de verschillen van verschillen terug.


Met het argument lagkunt u de vertraging specificeren.

Bijvoorbeeld, als lag = 2, worden de verschillen tussen de derde en de eerste waarde, tussen de vierde en de tweede waarde, tussen de vijfde en de derde waarde enz. berekend.

p>

diff(temp, lag = 2)
[1] -9  0  0  0  0  1  0 -1  0  0  0  0  0  2  9

Antwoord 2, autoriteit 25%

Het berekent het verschil tussen paren opeenvolgende elementen.

Laten we zeggen dat tempwaarnemingen zijn van een variabele, bijvoorbeeld temperatuurmetingen op het hele uur. Dan zal diff(temp)je vertellen hoeveel de temperatuur is veranderd gedurende elk uur.

Het tegenovergestelde van diff()is cumsum()(cumulatieve som):

> temp
 [1] 10  1  1  1  1  1  1  2  1  1  1  1  1  1  1  3 10
> cumsum(c(10, diff(temp)))
 [1] 10  1  1  1  1  1  1  2  1  1  1  1  1  1  1  3 10

Other episodes