r - R 中按字符串格式过滤

标签 r string filter tidyverse

我有一个 ID 列,其格式应始终为 ABCDE123 - 五个字母和三个数字,没有间隙,没有符号。

我确信有许多行没有正确遵循此格式。是否可以按 R 中的字符串格式进行过滤,以便我可以识别这些行并查看它们?

Tidyverse 是首选,但任何解决方案都会有帮助!

最佳答案

如果这些是 5 个大写字母后跟 3 个数字,请指定正则表达式以匹配从开头 (^) 开始的 5 个大写字母 [A-Z]{5}要返回的 str_detect 中字符串末尾 ($) 后跟有 3 位数字 ([0-9]{3}) 的字符串用于过滤数据行

的逻辑向量
library(dplyr)
library(stringr)
df1 %>%
    filter(str_detect(ID, '^[A-Z]{5}[0-9]{3}$'))

如果应删除这些行,请在 str_detect 中指定 negate = TRUE

df1 %>%
    filter(str_detect(ID, '^[A-Z]{5}[0-9]{3}$', negate = TRUE))

或者正如 @BenBolker 在评论中提到的那样,[[:upper:]]{5}[A-Z]{5} 更通用

关于r - R 中按字符串格式过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68433417/

相关文章:

regex - 替换字符串中最后一次出现的字符

arrays - 使用复选框和 AngularJS 过滤 ng-repeat 列表

r - 条件分割

r - 如何将 coord_fixed 与 scale_x_continuous 一起使用而不丢失其中一个或另一个的功能

r - 在 R 中处理 "less than"

data.table 中的行号

c++ - 如何获取 C++ 字符串流的结尾?

c - 从函数返回字符串(c语言)

CSS - 使用过滤器为黑白 PNG 图像添加颜色

python - 如何有效分离不同大小的数据输入?