【问题标题】:Delete row based on the value of the rows above根据上面行的值删除行
【发布时间】:2014-05-15 16:27:26
【问题描述】:

我有以下数据集:

data <- cbind(c(1,2,3,4,5,6,7,8,9,10,11),c(1,11,21,60,30,2,61,12,3,35,63))

我想选择第二列中的数字大于该点达到的最高数字的行。结果应该是这样的。

    [,1]    [,2]
[1,]    1   1
[2,]    2   11
[3,]    3   21
[4,]    4   60
[5,]    7   61
[6,]    11  63

【问题讨论】:

    标签: r subset


    【解决方案1】:

    你想试试cummax:

    > d[ d[,2] == cummax(d[,2]) ,]
         [,1] [,2]
    [1,]    1    1
    [2,]    2   11
    [3,]    3   21
    [4,]    4   60
    [5,]    7   61
    [6,]   11   63
    

    PS。 data 是一个内部的R 函数,因此,由于R 变量和函数共享命名空间(R 的设计受到Scheme 的影响,即"Lisp-1"),因此您的变量会影响系统函数。

    【讨论】:

      【解决方案2】:

      cummax 函数应该可以正常工作

      data[ data[,2]==cummax(data[,2]),] 
      

      返回

           [,1] [,2]
      [1,]    1    1
      [2,]    2   11
      [3,]    3   21
      [4,]    4   60
      [5,]    7   61
      [6,]   11   63
      

      根据需要。

      【讨论】:

        猜你喜欢
        • 2015-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 2023-03-17
        • 2019-02-24
        相关资源
        最近更新 更多