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

在R语言中匹配两个字符向量相似词并生成对应匹配表

解决R语言字符串向量匹配并生成对应表的方案

可以用stringdist包的amatch函数实现精准的模糊匹配,再整理成你需要的两列对应表,具体步骤如下:

1. 安装并加载依赖包

如果还没安装stringdist,先执行安装命令:

install.packages("stringdist")
library(stringdist)

2. 执行匹配并生成对应表

使用amatch计算每个uniques_df_deps元素在uniques_df_gini中的最佳匹配位置,再提取对应匹配值,无匹配则显示NA:

# 定义两个向量
uniques_df_deps <- c("Antioquia",  "Atlántico",  "Bogotá",    "Bolívar",    "Boyacá", "Caldas",    "Caquetá",    "Cauca",  "Cesar", "Córdoba",    "Cundinamarca",  "Chocó", "Huila",  "La Guajira",  "Magdalena", "Meta", "Nariño", "Norte de Santander",     "Quindío",    "Risaralda",  "Santander", "Sucre",  "Tolima", "Valle del Cauca",        "Arauca", "Casanare",   "Putumayo",  "San Andrés y Providencia", "Amazonas",   "Guainía",   "Guaviare",   "Vaupés", "Vichada")

uniques_df_gini<- c("Antioquia", "Atlántico", "Bogotá D.C.", "Bolívar",   "Boyacá",   "Caldas",    "Caquetá",   "Cauca", "Cesar", "Chocó",    "Córdoba",   "Cundinamarca",  "Huila", "La Guajira",  "Magdalena",  "Meta",  "Nariño",    "Norte de Santander","Quindío",   "Risaralda",  "Santander", "Sucre", "Tolima",    "Valle del Cauca")

# 计算匹配位置,采用Jaro-Winkler距离,适合短字符串近似匹配
match_pos <- amatch(uniques_df_deps, uniques_df_gini, method = "jw", maxDist = 0.2)

# 生成对应表
match_table <- data.frame(
  Deps_Identifier = uniques_df_deps,
  Gini_Match = ifelse(is.na(match_pos), NA, uniques_df_gini[match_pos])
)

3. 查看结果

执行后match_table就是你需要的两列对应表,部分结果示例如下:

Deps_IdentifierGini_Match
AntioquiaAntioquia
AtlánticoAtlántico
BogotáBogotá D.C.
BolívarBolívar
AraucaNA
San Andrés y ProvidenciaNA

参数说明

  • method = "jw":采用Jaro-Winkler距离算法,适合处理像"Bogotá"和"Bogotá D.C."这种前缀一致的字符串匹配
  • maxDist = 0.2:设置最大匹配距离,超过这个值的视为无匹配,可根据需求调整(值越小匹配越严格)

内容的提问来源于stack exchange,提问作者John M. Riveros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:05:13