diff()函数---useR!
2019-10-29 本文已影响0人
淡水鱼Ada
diff(x, lag = 1, differences = 1)
- x是numeric vector
- lag是一个整数,表明相减的两项相距多元,即被减数距离减数多远。
- difference: 连续执行多少次diff()函数。
这个函数有两个重要的参数lag和differences,需要特别注意一下。
看一下列子体会一下:
- 例1:参数lag=1
diff(c(2,3,5,18,4,6,4),lag=1)
#[1] 1 2 13 -14 2 -2
参数lag=1的diff()函数是这样计算的:因为lag值为1,所以滞后一项,也就是说,相减的两项,位置相距1项,即后一项减前一项的值。
1- 第二项减去第一项的值,3-2=1
2-第三项减去第二项的值,5-3=2
3-第四项减去第三项的值,18-5
13
4-第五项减去第四项的值,4-18=-14
5-第六项减去第五项的值,6-4=2
6-第七项减去第六项的值,4-6=-2
- 例2:参数lag=2
diff(c(2,3,5,18,4,6,4),lag=2)
#[1] 3 15 -1 -12 0
参数lag=1的diff()函数是这样计算的:因为lag值为2,所以滞后两项,也就是说,相减的两项位置相隔2。具体计算如下:
1- 第三项减去第一项的值,5-2=3
2-第四项减去第二项的值,18-3=15
3-第五项减去第三项的值,4-5
-1
4-第六项减去第四项的值,6-18=-12
5-第七项减去第五项的值,4-4=0
- 例3:参数differences=2
diff(c(2,3,5,18,4,6,4),lag=1,differences=2)
#[1] 1 11 -27 16 -4
本例参数lag=1,differences=2,也就是说执行两次diff(x,lag=1),具体来说,首先计算diff(x,lag=1),以这个函数的结果作为下一次diff()函数中的x,再执行一遍diff(x,lag=1)
图3-1.png
从图3-1可以看到,首先计算一遍diff(x,lag=1),得到的值在表格第一行中;然后,再以这些值作为input=x,计算diff(x,lag=1),得到的结果在表格的第二行。
下面这个网站上有一个小练习:Calculate a difference of a series using diff()
diff()函数还可以用来计算导数
x# a vector of x axis points
y# a vector of y axis points
#change in Y: diff(y)
#change in X: diff(x)
slope=diff(y)/diff(x)