首页 > 解决方案 > 如何匹配R中两列之间的字符串?

问题描述

我想根据两个现有列之间的字符串匹配创建一个新列(MATCH)。例如 -

st_add aa_add 匹配
杰玛杜尔加协会 jai maa durga 殖民地 匹配
埃尔夫公路 1 号公路 公路公路 2 elph 匹配
斯里尼万殖民地parelist 斯里尼万巴士站 不匹配

如果第 1 列和第 2 列之间的三个或更多单词匹配,则第 3 列(匹配)应显示“匹配”。但如果匹配的单词少于 3 个或根本不匹配(例如第 3 行),则结果应为“NO MATCH”

我如何使用 R 来做到这一点?

标签: rstringdataframematchcharacter

解决方案


你可以试试stringdist。您可以为匹配设置字符串距离阈值。它还提供了多种计算距离的方法。感谢 Ronak 提供数据集代码。

library(stringdist)

df$match <- ifelse(stringdist(df$st_add, df$aa_add) < 12, "MATCH", "NOT MATCH")
df

#                      st_add               aa_add     match
# 1     jai maa durga society jai maa durga colony     MATCH
# 2       elph road highway 1  road highway 2 elph     MATCH
# 3 srinivan colony parel ist   srinivan bus depot NOT MATCH

推荐阅读