1

我想在 R 中执行一个在 Excel 中很简单的计算。假设我有一长列数字,我想从第 2 行中减去第 1 行,从第 4 行中减去第 3 行,依此类推,这样我就可以减去后续的数字对。我该怎么做呢?

甚至更简单的东西。如何从第 2 行中减去第 1 行,然后从第 3 行中减去第 2 行,依此类推?基本上在这里我找到了每两行之间的区别。

这应该很容易,但是我花了几个小时尝试并寻找答案,但无济于事。

请帮忙。

谢谢!

4

2 回答 2

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
于 2013-08-22T10:08:10.620 回答
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

因此,我们的答案将是 (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
于 2013-08-22T11:48:16.523 回答