我不明白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
这个功能的定义是什么?
答案 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