我想在 R 中执行一个在 Excel 中很简单的计算。假设我有一长列数字,我想从第 2 行中减去第 1 行,从第 4 行中减去第 3 行,依此类推,这样我就可以减去后续的数字对。我该怎么做呢?
甚至更简单的东西。如何从第 2 行中减去第 1 行,然后从第 3 行中减去第 2 行,依此类推?基本上在这里我找到了每两行之间的区别。
这应该很容易,但是我花了几个小时尝试并寻找答案,但无济于事。
请帮忙。
谢谢!
我想在 R 中执行一个在 Excel 中很简单的计算。假设我有一长列数字,我想从第 2 行中减去第 1 行,从第 4 行中减去第 3 行,依此类推,这样我就可以减去后续的数字对。我该怎么做呢?
甚至更简单的东西。如何从第 2 行中减去第 1 行,然后从第 3 行中减去第 2 行,依此类推?基本上在这里我找到了每两行之间的区别。
这应该很容易,但是我花了几个小时尝试并寻找答案,但无济于事。
请帮忙。
谢谢!
您正在寻找功能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、第 3 和第 4 的原始问题,我会将数据转换为矩阵并沿列进行差异。
set.seed(1)
x=sample(1:10,10)
x
[1] 3 4 5 7 2 8 9 6 10 1
因此,我们的答案将是 (3-4)、(5-7)、(2-8)、(9-6) 和 (10-1) 中的 -1、-2、-6、3、9。
这使得我们的矩阵:
> 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