如何使用Tidyverse删除dataframe中Eircode列特定字符后的内容
实现步骤
1. 核心逻辑
你需要提取的都柏林邮编前缀统一为D+两位数字的3位字符结构,直接使用正则匹配提取开头符合规则的部分即可实现截断多余后缀的需求,无需逐位判断后缀。
2. 依赖加载
tidyverse套件中的dplyr用于数据框操作,stringr用于字符串处理,直接加载tidyverse即可:
library(tidyverse)
3. 字段处理代码
直接覆盖原字段
MainSchools <- MainSchools %>% # 若Eircode为因子类型,先加一行Eircode = as.character(Eircode)转换 mutate(Eircode = str_extract(Eircode, "^D\\d{2}"))
保留原字段,新增清洗后字段
MainSchools <- MainSchools %>% mutate(Eircode_clean = str_extract(Eircode, "^D\\d{2}"))
4. 异常值兼容(可选)
如果存在不符合D+两位数字开头的异常录入值,上述代码会返回NA,若需要保留原始异常值,可调整为:
MainSchools <- MainSchools %>% mutate(Eircode = coalesce(str_extract(Eircode, "^D\\d{2}"), Eircode))
5. 结果验证
可执行以下代码查看所有处理后的邮编取值,确认均在D01-D24范围内:
MainSchools %>% distinct(Eircode) %>% arrange(Eircode)
内容的提问来源于stack exchange,提问作者mrwahl
相关产品推荐
相关产品推荐

