2012-12-17 358 views
19

我不明白R的功能diff()是什麼。看到這個例子:R中的diff()函數有什麼作用?

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

上面的代碼產生以下輸出:

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

什麼是這個函數的定義?

+0

是的,但我不能undderstand它背後的概念。 –

+0

什麼是應用程序,以及如何計算結果? –

回答

48

函數計算矢量的所有連續值之間的差異。對於你的榜樣載體,差異是:

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

的參數differences允許您指定的不同的順序。

例如,命令

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

產生相同的結果作爲

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

因此,返回的差異的差異。


參數lag允許您指定滯後。

例如,如果lag = 2,則計算第三值與第一值之間的差值,第四值與第二值之間,第五值與第三值之間等等。

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

「差異」的論點是什麼? –

+0

@ user1885733查看我答案的更新。 –

+0

@ user1885733如果您在不帶'lag'和'differences'參數的情況下調用'diff(x)',將使用默認值(即1)。這與'diff(x,lag = 1,difference = 1)'相同。 –

16

它計算連續元素對之間的差異。

假設temp是一些變量的觀測值,例如在小時內讀取的溫度讀數。然後diff(temp)會告訴你每小時的溫度變化。

diff()相反的是cumsum()(累積和):

> 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