如何过滤掉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_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

【讨论】:

以上是关于如何过滤掉R中以某个值开头的行?的主要内容,如果未能解决你的问题,请参考以下文章

linux怎样用grep过滤

熊猫选择列中的值不以字符串开头的行

fread - 跳过以特定字符开头的行 - “#”

如果存在,则替换文件中以字符串开头的行,如果不存在则添加

关于shell基础,大数据的前期准备

notepad如何删除某个字符开头的行,notepad如何删除空白行?