代码之家  ›  专栏  ›  技术社区  ›  stackinator Brenton Wiernik

dplyr方法获取最后一个具有正值的行号

  •  0
  • stackinator Brenton Wiernik  · 技术社区  · 7 年前
    library(tidyverse)
    df <- tibble(a = c(1, 2, 3, 0, 5, 0, 7, 0, 0, 0)) %>% print()
    df[1:max(which(df$a>0)),]
    

    This little code chunk above 确定 df 是包含正值的最后一行,并从数据帧中筛选第7行之后的每一行。

    # A tibble: 10 x 1
           a
       <dbl>
     1    1.
     2    2.
     3    3.
     4    0.
     5    5.
     6    0.
     7    7.
     8    0.
     9    0.
    10    0.
    

    为了这个

    # A tibble: 7 x 1
          a
      <dbl>
    1    1.
    2    2.
    3    3.
    4    0.
    5    5.
    6    0.
    7    7.
    

    我该怎么做 df[1:max(which(df$a>0)),] 威尔呢 但现在我得在潮间小屋里做这个。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Ronak Shah    7 年前

    我们可以用 slice

    library(tidyverse)
    
    df %>%
      slice(1:max(which(a > 0)))
    
    
    #      a
    #   <dbl>
    #1     1
    #2     2
    #3     3
    #4     0
    #5     5
    #6     0
    #7     7
    

    或者 filter max 的索引 a > 0 .

    df %>%
      filter(row_number() <= max(which(a > 0)))