【发布时间】:2021-08-31 20:40:42
【问题描述】:
我正在处理一个庞大的姓名数据集,并且需要能够按个人进行分组。可能在数据集中存在看起来不同但属于同一个人的姓名,例如 John Doe 或 John A. Doe,或者 Michael Smith 和 Mike Smith。 R 有没有办法找到这样的实例并将它们识别为同一个人?
df <- data.frame(
name = c("John Doe", "John A. Doe", "Jane Smith", "Jane Anderson", "Jane Anderson Lowell",
"Jane B. Smith", "John Doe", "Jane Smith", "Michael Smith",
"Mike Smith", "A.K. Ross", "Ana Kristina Ross"),
rating = c(1,2,1,1,2,3,1,4,2,1,3,2)
)
这里有多个重复的个体,无论变体是中间名首字母、缩短的名字、加长的名字还是姓氏改变的人。我一直在尝试找到一个函数,该函数可以给出名称匹配中字符的相似百分比,然后我可以从那里手动检查高百分比的案例以评估它们是否确实是同一个人。我的最终目标是找到每个人的平均评分,我需要按个人排序。
【问题讨论】:
-
您正在进入概率数据链接/匹配领域以彻底完成此操作。 R 中有很多字符串距离包,如 cran.r-project.org/web/packages/phonics/vignettes/phonics.html 和成熟的包,如 RecordLinkage - cran.r-project.org/web/packages/RecordLinkage/index.html,以及一组有限的内置功能,正如我在这里展示的:stackoverflow.com/q/27975705/496803