2012-12-17 14 views
19

Non capisco cosa sia la funzione diff() in R. Vedi questo esempio:Che cosa fa la funzione diff() in R?

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

Il codice precedente produce il seguente output:

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

Qual è la definizione di questa funzione?

+0

Sì, ma non posso undderstand il concetto dietro di esso. –

+0

Qual è l'applicazione e come vengono calcolati i risultati? –

risposta

48

La funzione calcola le differenze tra tutti i valori consecutivi di un vettore. Per il vostro esempio vettore, le differenze sono:

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

L'argomento differences consente di specificare l'ordine delle differenze.

esempio il comando

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

produce lo stesso risultato

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

Quindi, restituisce le differenze delle differenze.


L'argomento lag consente di specificare il ritardo.

Ad esempio, se lag = 2, vengono calcolate le differenze tra il terzo e il primo valore, tra il quarto e il secondo valore, tra il quinto e il terzo valore, ecc.

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

Cosa fa l'argomento "differenze"? –

+0

@ user1885733 Vedere l'aggiornamento della mia risposta. –

+0

@ user1885733 Se si chiama 'diff (x)' senza gli argomenti 'lag' e' differenze', verranno utilizzati i valori predefiniti (ad esempio, 1). È lo stesso di 'diff (x, lag = 1, differenze = 1)'. –

16

Calcola la differenza tra coppie di elementi consecutivi.

Diciamo che temp sono le osservazioni di alcune variabili, ad esempio le letture della temperatura effettuate all'ora. Quindi diff(temp) indicherà quanto è cambiata la temperatura durante ogni ora.

L'opposto di diff() è cumsum() (somma cumulativa):

> 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