r - 从单个列中识别模糊重复并使用 R 创建包含模糊重复记录的子集
问题描述
我有一个数据集,其中包含一个带有个人姓名的字段。有些名称相似,但有细微差别,例如“CANON INDIA PVT”。LTD'和'佳能印度PVT。LTD.”、“Antila,Thomas”和“ANTILA THOMAS”、“Z_SANDSTONE COOLING LTD”和“SANDSTONE COOLING LTD”等。我需要识别这些模糊重复项并创建一个包含这些记录的新子集。我有一个巨大的表,其中包含这样的记录,所以,我只是制作一个样本。
| Name | City |
|-------------------------|:-------:|
| CANON PVT. LTD | Georgia |
| Antila,Thomas | Georgia |
| Greg | Georgia |
| St.Luke's Hospital | Georgia |
| Z_SANDSTONE COOLING LTD | Georgia |
| St.Luke's Hospital | Georgia |
| CANON PVT. LTD. | Georgia |
| SANDSTONE COOLING LTD | Georgia |
| Greg | Georgia |
| ANTILA,THOMAS | Georgia |
我希望输出为:
| Name | City |
|-------------------------|:-------:|
| CANON PVT. LTD | Georgia |
| CANON PVT. LTD. | Georgia |
| Antila,Thomas | Georgia |
| ANTILA,THOMAS | Georgia |
| Z_SANDSTONE COOLING LTD | Georgia |
| SANDSTONE COOLING LTD | Georgia |
我尝试使用 RecordLinkage 和 agrep,但它们将原始数据作为输出。
library(RecordLinkage)
ClosestMatch2 = function(string, stringVector){
distance = levenshteinSim(string, stringVector);
stringVector[distance == max(distance)]
}
Fuzzy_duplicate=ClosestMatch2(df$Name, df$Name)
另一种方法是:
lapply(df$Name, agrep, df$Name, value = TRUE)
使用 agrep 将输出作为向量索引。但是,我想提取仅属于名称相似的所有记录?
解决方案
推荐阅读
- json - 如何在元素值周围没有方括号的情况下获取 Json 有效负载中的元素值?
- sql-server - SQL Server 批量插入不将双引号识别为字段引用
- python - 在 Python 中获取文件大小、创建日期和修改日期
- angular - 在没有登录的情况下使用 spring boot 和 angular 8 保护应用程序的方法是什么?
- php - php 实时表单提交
- scala - Akka actor 记录中有关 PinnedDispatcher 的线程名称
- angular - 阅读 Angular 中的 Spring Boot 属性
- c++ - 在 Visual Studio 2019 C++ 中使用 CPPUnitTest 编写“DivideByZero”单元测试用例时出现问题
- java - 合并两个二维数组 (M + N)
- bash - 捕获管道命令的输出,同时仍然知道第一个命令是否写入 stderr