【问题标题】:What does the diff() function in R do? [closed]R 中的 diff() 函数有什么作用? [关闭]
【发布时间】:2012-12-17 09:32:50
【问题描述】:

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

这个函数的定义是什么?

【问题讨论】:

  • 是的,但我无法理解其背后的概念。
  • 什么是应用程序,结果如何计算?

标签: r


【解决方案1】:

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

 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

【讨论】:

  • 参数“差异”有什么作用?
  • @user1885733 查看我的答案更新。
  • @user1885733 如果您调用diff(x) 时不带参数lagdifferences,将使用默认值(即1)。这与diff(x, lag = 1, differences = 1) 相同。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多