34

我不明白diff()R 中的函数是做什么的。看这个例子:

 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

这个函数的定义是什么?

4

2 回答 2

81

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

 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
于 2012-12-17T09:48:02.907 回答
20

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

假设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
于 2012-12-17T09:52:56.043 回答