【问题标题】:How to filter out rows that start with a certain value in R?如何过滤掉R中以某个值开头的行?
【发布时间】:2022-01-03 08:20:06
【问题描述】:

我有一个像下面这样的数据集

ID col1 col2
1 042 10
2 353 13
3 403 03
4 642 22

我只想过滤掉 col1 中以 4 开头的值的行。这包括具有 04 的 row1,但不包括第 4 行。col1 是一个字符列。

最终的数据集应该是这样的。

ID col1 col2
2 353 13
4 642 22

谢谢!

【问题讨论】:

    标签: r subset


    【解决方案1】:

    我们可以使用正则表达式'^0+4|^4'str_detectfilter 组合起来,这表示以0 开头一次或多次后跟4 或以4 开头。

    代码:

    library(tidyverse)
    
    df <- read_table("ID    col1    col2
    1   042 10
    2   353 13
    3   403 03
    4   642 22")
    
    
    df %>% 
      filter(!str_detect(col1, '^0+4|^4'))
    #> # A tibble: 2 × 3
    #>      ID col1  col2 
    #>   <dbl> <chr> <chr>
    #> 1     2 353   13   
    #> 2     4 642   22
    

    reprex package (v2.0.1) 于 2021 年 11 月 24 日创建

    【讨论】:

      【解决方案2】:

      你可以试试

      library(dplyr)
      
      df %>%
        filter(substring(as.numeric(col1),1,1) != "4")
      
        ID col1 col2
      1  2  353   13
      2  4  642   22
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多