我有一个 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/