R中的diff()函数有什么作用?

时间:2012-12-17 09:32:51

标签: r

我不明白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

这个功能的定义是什么?

2 个答案:

答案 0 :(得分:68)

该函数计算向量的所有连续值之间的差异。对于您的示例向量,差异是:

 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

答案 1 :(得分:19)

它计算连续元素对之间的差异。

假设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