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

如何用R基于前缀匹配补全数据集里的不完整英国邮政编码

英国邮政编码补全解决方案

需求说明

利用包含完整英国邮政编码的数据集,补全仅含前缀的不完整邮编字段:匹配前缀后,用第一个(或任意一个)对应的完整邮编替换原不完整项。

已有数据读取代码(修正后)

# 加载依赖包
library(tidyverse)
library(readxl)

# 读取不完整邮编数据集
HomePostcode <- read_excel("C:/Users/JWP/IncompletePostcodeData.xlsx", 
                           sheet = "IncompletePostcodeData", col_types = c("skip", "text", "skip"))

# 读取完整英国邮编数据集
AllUKPostcodes <- read_excel("C:/Users/JWP/IncompletePostcodeData.xlsx", 
                             sheet = "AllUKPostcodesData", col_types = c("skip", "text", "skip"))

解决方案代码

步骤1:构建前缀-完整邮编映射表

从完整邮编数据中提取前缀,按前缀分组后保留每组第一个完整邮编,建立匹配关系:

# 生成前缀与完整邮编的映射(每个前缀对应第一个匹配的完整邮编)
postcode_mapping <- AllUKPostcodes %>%
  # 提取完整邮编中空格前的前缀部分
  mutate(postcode_prefix = str_extract(Postcode, "^[^\\s]+")) %>%
  # 按前缀分组,仅保留每组第一条记录
  group_by(postcode_prefix) %>%
  slice_head(n = 1) %>%
  ungroup() %>%
  # 保留必要字段用于匹配
  select(postcode_prefix, full_postcode = Postcode)

步骤2:匹配补全不完整邮编

将不完整邮编数据集与映射表连接,替换为完整邮编:

# 完成邮编补全
completed_postcodes <- HomePostcode %>%
  # 根据前缀匹配映射表
  left_join(postcode_mapping, by = c("Postcode" = "postcode_prefix")) %>%
  # 用完整邮编替换原不完整项,无匹配则保留原内容
  mutate(Postcode = coalesce(full_postcode, Postcode)) %>%
  # 移除临时辅助字段
  select(-full_postcode)

示例输出

Postcode
PE2 4LR
LE7 2DL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:01:08