1

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

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

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

4

1 回答 1

2

如果这些是 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 = TRUEstr_detect

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

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

于 2021-07-18T22:08:42.100 回答