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

A K*_*ntu 30 r

我不明白diff()R中的功能是什么.看这个例子:

 temp = c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10)
 diff(temp)
Run Code Online (Sandbox Code Playgroud)

上面的代码产生以下输出:

 [1] -9  0  0  0  0  0  1 -1  0  0  0  0  0  0  2  7
Run Code Online (Sandbox Code Playgroud)

这个函数的定义是什么?

Sve*_*ein 71

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

 1 - 10 = -9
 1 -  1 =  0
 1 -  1 =  0
.
.
.
 3 -  1 =  2
10 -  3 =  7
Run Code Online (Sandbox Code Playgroud)

参数differences允许您指定差异的顺序.

例如,命令

diff(temp, differences = 2) 
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5
Run Code Online (Sandbox Code Playgroud)

产生与...相同的结果

diff(diff(temp))
[1]  9  0  0  0  0  1 -2  1  0  0  0  0  0  2  5
Run Code Online (Sandbox Code Playgroud)

因此,它返回差异的差异.


参数lag允许您指定滞后.

例如,如果lag = 2,计算第三和第一值之间,第四和第二值之间,第五和第三值之间的差等.

diff(temp, lag = 2)
[1] -9  0  0  0  0  1  0 -1  0  0  0  0  0  2  9
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 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
Run Code Online (Sandbox Code Playgroud)