【问题标题】:how do I perform spreadsheet type calculations in R?如何在 R 中执行电子表格类型计算?
【发布时间】:2013-08-22 10:04:18
【问题描述】:

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

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

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

请帮忙。

谢谢!

【问题讨论】:

    标签: r loops spreadsheet iteration


    【解决方案1】:

    您正在寻找函数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
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-01
        相关资源
        最近更新 更多