我有一个应该始终格式化的 ID 列ABCDE123- 五个字母和三个数字,没有间隙没有符号。
我确定有许多行没有正确遵循这种格式。是否可以按 R 中的字符串格式进行过滤,以便我可以识别这些行并查看它们?
Tidyverse 是首选,但任何解决方案都会有所帮助!
如果这些是 5 个大写字母后跟 3 个数字,则指定正则表达式以匹配从字符串[A-Z]{5}的开头 ( ) 开始的 5 个大写字母,然后在字符串的结尾 ( )处匹配 3 个数字 ( ),以返回一个逻辑向量,即用于数据的行^[0-9]{3}$str_detectfilter
library(dplyr)
library(stringr)
df1 %>%
filter(str_detect(ID, '^[A-Z]{5}[0-9]{3}$'))
如果应删除这些行,请negate = TRUE在str_detect
df1 %>%
filter(str_detect(ID, '^[A-Z]{5}[0-9]{3}$', negate = TRUE))
或者正如@BenBolker 在评论中提到的那样,[[:upper:]]{5}与[A-Z]{5}