You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中使用campfin包标准化地址后缀缩写失败求助

问题描述

我在R中有一个包含数百万条唯一地址的数据框,地址列示例如“725 E 8TH ST”。为了标准化地址,希望将所有街道后缀缩写替换为全称(如将E替换为East,ST替换为Street),不需要对地址进行验证。发现campfin包中的内置tibble对象usps_street包含大量预定义的缩写与全称对应关系,但尝试使用normal_address(df$Address, abbs = usps_street)和expand_abbrev(df$Address, abb = usps_street)这两个函数后,地址列没有变化,无法成功替换缩写。不想手动定义缩写(如abb = c("ST" = "STREET")),因为数量太多,希望利用usps_street来解决问题。

地址数据片段:

structure(list(Address = c("2771 NORTH THOMPSON RD NE", "10 BROOKWAY COURT", 
"1000 WESTCLIFF AVE", "10009 NORTHEAST 145TH ST", "10021 PINECREST DRIVE", 
"1003 WEST VICTORIA STREET"), Unit = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    City = c("ATLANTA", "MANSFIELD", "SAGINAW", "JONES", "PROVIDENCE VILLAGE", 
    "BRADY"), Country = c(NA, "US", "US", "US", "US", "US"), 
    Zip = c(30319, 76063, 76179, 73049, 76227, 76825), State = c("GA", 
    "TX", "TX", "OK", "TX", "TX")), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))
解决方案

正确使用campfin包的方法

campfin包的expand_abbrev函数需要的是命名向量格式的缩写映射,而usps_street是tibble格式,需要先转换格式:

  1. 加载工具包并处理映射关系:
library(campfin)
library(dplyr)

# 将usps_street转换为命名向量,abbrev作为键,full作为对应值
abb_vec <- setNames(usps_street$full, usps_street$abbrev)
  1. 调用expand_abbrev完成替换:
df$Address_clean <- expand_abbrev(
  string = df$Address,
  abb = abb_vec,
  ignore_case = TRUE, # 兼容地址中大小写不一致的情况
  whole = TRUE # 确保只匹配完整单词,避免部分匹配(比如RD出现在其他单词中)
)

运行后你的测试数据会得到如下标准化结果:

  • "2771 NORTH THOMPSON Road Northeast"
  • "10 BROOKWAY Court"(COURT已是全称,无变化)
  • "1000 WESTCLIFF Avenue"
  • "10009 NORTHEAST 145TH Street"
  • "10021 PINECREST Drive"(DRIVE已是全称,无变化)
  • "1003 WEST VICTORIA Street"(STREET已是全称,无变化)

替代方案:用stringr批量替换

如果campfin的方法不符合需求,也可以用stringr结合usps_street实现批量替换:

library(stringr)

# 生成匹配完整单词的正则表达式
patterns <- paste0("\\b", usps_street$abbrev, "\\b")
names(patterns) <- usps_street$full

# 批量替换地址中的缩写
df$Address_clean <- str_replace_all(df$Address, patterns)

这种方法利用正则精准匹配完整缩写单词,适合大规模数据处理,效率表现稳定。


内容的提问来源于stack exchange,提问作者doing_data

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:32:45