如何过滤掉R中以某个值开头的行?
Posted
技术标签:
【中文标题】如何过滤掉R中以某个值开头的行?【英文标题】:How to filter out rows that start with a certain value in 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 |
谢谢!
【问题讨论】:
【参考方案1】:我们可以使用正则表达式'^0+4|^4'
将str_detect
与filter
组合起来,这表示以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
【讨论】:
以上是关于如何过滤掉R中以某个值开头的行?的主要内容,如果未能解决你的问题,请参考以下文章