【问题标题】:Filter rows in dataframe in R after first instance of specific column value using dplyr使用 dplyr 在特定列值的第一个实例之后过滤 R 中数据框中的行
【发布时间】:2020-12-14 16:00:49
【问题描述】:

我在 R 中有一个包含很多列的数据框。一列包含递增的数字序列(列x),而另一列包含某些值(列y

示例 图书馆(tidyverse)

df <- approx(seq(1,10,1), c(1,5,7,11,4,12,30, 20, 10, 9)) %>%
      as.data.frame()

plot(df)

问题

我想使用dplyr 删除数据框中的所有行,从第一个y-value &gt; 10 开始。我可以使用dplyrs' filter function if 来做到这一点,该函数只越过y=10 的线一次。但是,如果函数多次越界,我将无法再使用它。

尝试

我尝试过使用dplyrs' slice函数:

df %>% slice(which(df$y<10)[1] )

但遗憾的是给出了一个错误...

预期输出

df[-c(16:50),]
plot(df[-c(16:50),])

问题

如何使用 R 中的 Tidyverse 包集合在特定列中的值的第一个实例之后从数据框中删除行?

【问题讨论】:

    标签: r dataframe dplyr tidyverse


    【解决方案1】:

    这样的事情可能会奏效:

    df %>% 
        filter(row_number() <= first( which(df$y >10) ) -1 )
    

    【讨论】:

      【解决方案2】:
      df_new <- df[1:min(which(df$y>10)-1),]
      plot(df_new)
      

      【讨论】:

        猜你喜欢
        • 2017-05-04
        • 2021-08-26
        • 1970-01-01
        • 2017-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多