2012-12-17 7 views
19

Rの機能diff()は何をしているのか分かりません。この例を参照してください:Rのdiff()関数は何をしますか?

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

この関数の定義は何ですか:

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

上記のコードは次のような出力を生成しますか?

+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あなたがラグを指定することができます。

たとえば、第3と第1の値の間、第4と第2の値の間、第5と第3の値の間の差などが計算されます(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、differences = 1)'と同じです。 –

16

連続する要素のペアの差を計算します。

たとえば、tempは、1時間の温度読み値などの変数の観測値です。その後、diff(temp)は、1時間ごとに温度がどのくらい変化したかを教えてくれます。

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 
関連する問題