R语言如何按指定字符串格式筛选数据行?优先使用tidyverse方案
R 格式校验ID数据实现方案
tidyverse 方案(优先推荐)
你需要的匹配规则可以通过正则表达式^[A-Za-z]{5}\\d{3}$实现,该表达式逻辑为:严格匹配从开头到结尾共5个英文字母+3个数字的字符串,无额外字符。
你可以直接用tidyverse生态下stringr包的str_detect()函数完成筛选:
# 加载tidyverse library(tidyverse) # 假设你的数据集名为df,ID列名为id # 直接提取所有不符合格式的行用于核查 invalid_ids <- df %>% filter(!str_detect(id, "^[A-Za-z]{5}\\d{3}$")) # 如果需要给原表加一列标记是否合规,可以用以下代码 df <- df %>% mutate(id_legal = str_detect(id, "^[A-Za-z]{5}\\d{3}$"))
如果你的ID要求只能是大写/小写字母,把正则中的[A-Za-z]替换为[A-Z](仅大写)或[a-z](仅小写)即可。
基础R实现方案
如果不想依赖第三方包,可以用基础R的grepl()函数实现相同逻辑:
# 提取不合规行 invalid_ids <- df[!grepl("^[A-Za-z]{5}\\d{3}$", df$id), ] # 新增合规标记列 df$id_legal <- grepl("^[A-Za-z]{5}\\d{3}$", df$id)
内容的提问来源于stack exchange,提问作者user5813583
相关产品推荐
相关产品推荐

