r - 如何匹配R中两列之间的字符串?
问题描述
我想根据两个现有列之间的字符串匹配创建一个新列(MATCH)。例如 -
st_add | aa_add | 匹配 |
---|---|---|
杰玛杜尔加协会 | jai maa durga 殖民地 | 匹配 |
埃尔夫公路 1 号公路 | 公路公路 2 elph | 匹配 |
斯里尼万殖民地parelist | 斯里尼万巴士站 | 不匹配 |
如果第 1 列和第 2 列之间的三个或更多单词匹配,则第 3 列(匹配)应显示“匹配”。但如果匹配的单词少于 3 个或根本不匹配(例如第 3 行),则结果应为“NO MATCH”
我如何使用 R 来做到这一点?
解决方案
你可以试试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
推荐阅读
- javascript - 只运行一次带有 GSAP 的 jQuery/Javascript 函数?
- regex - 使用 TRegEx 删除 HTML 标记之间的字符串
- reactjs - 对 React devtools chrome 扩展的未使用 JS 的 Lighthouse 报告感到困惑
- amazon-athena - 在 Amazon Athena 中创建临时函数
- simpy - 有没有办法在 simpy 中预定义积压队列?
- r - 当需要满足多个条件时,使用 case_when 创建新列
- angular - angular firebase实时数据库更新项目删除的数字索引
- java - 检查表中是否已存在列
- ansible - Ansible - 使用循环变量设置事实?
- android - 在材料日期范围选择器 Android 中限制为最多 7 天的选择