如何在R中执行电子表格类型计算?

时间:2013-08-22 10:04:19

标签: r loops spreadsheet iteration

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

甚至更简单的东西。如何从第2行减去第1行,然后从第3行减去第2行,依此类推?基本上我在这里发现每两行之间的差异。

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

请帮忙。

谢谢!

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