我想在R中执行一个在Excel中很简单的计算。假设我有一长串数字,我想从第2行减去第1行,从第4行减去第3行,依此类推,这样我们就可以减去后续的数字对。我该怎么做?
甚至更简单的东西。如何从第2行减去第1行,然后从第3行减去第2行,依此类推?基本上我在这里发现每两行之间的差异。
这应该很容易,但我花了几个小时尝试并寻找无济于事的答案。
请帮忙。
谢谢!
答案 0 :(得分:4)
您正在寻找功能diff()
。此函数将计算两个连续数量的向量之间的差异。
set.seed(1)
x<-sample(1:10,10)
x
[1] 3 4 5 7 2 8 9 6 10 1
diff(x)
[1] 1 1 2 -5 6 1 -3 4 -9
答案 1 :(得分:2)
为了解决第1,第2,第3和第4个差异的原始问题,我将数据转换为矩阵并沿列进行差异。
set.seed(1)
x=sample(1:10,10)
x
[1] 3 4 5 7 2 8 9 6 10 1
所以我们的答案是-1,-2,-6,3,9从(3-4),(5-7),(2-8),(9-6)和(10- 1)。
这使我们的矩阵:
> matrix(x,nrow=2)
[,1] [,2] [,3] [,4] [,5]
[1,] 3 5 2 9 10
[2,] 4 7 8 6 1
然后我们将diff
应用于列,添加一个负号,因为diff
反过来做减法:
> -apply(matrix(x,nrow=2),2,diff)
[1] -1 -2 -6 3 9