如何在str_replace中指定结尾匹配规则修正地址缩写
解决方案
你当前的写法会匹配字符串中任意位置的对应字符,因此已经是全称的地址里包含缩写片段时也会被错误替换。要实现仅匹配结尾的模式,在正则表达式末尾加$锚定符即可,该符号代表仅匹配字符串的结束位置。
修改后的代码(基础版)
library(tidyverse) test %>% mutate(address2 = str_replace(address, "Rd$","Road"), address2 = str_replace(address2, "Ave$","Avenue"), address2 = str_replace(address2, "St$","Street"))
运行后不会再出现Avenuenue、Streetreet这类错误重复后缀,所有地址的后缀会完成统一。
更简洁的优化写法
可以用str_replace_all一次性传入替换映射,减少重复代码:
test %>% mutate(address2 = str_replace_all(address, c( "Rd$" = "Road", "Ave$" = "Avenue", "St$" = "Street" )))
额外适配提示
如果部分地址末尾存在多余空格,可把模式调整为"Rd\\s*$",\\s*会匹配结尾处零个或多个空白字符,适配更多不规范的录入格式。
内容的提问来源于stack exchange,提问作者Jake L
相关产品推荐
相关产品推荐

