【发布时间】:2015-03-10 22:26:17
【问题描述】:
[以下更新]
我想根据常用名称将大型数据集 (112 megs) 与较小的数据集 (
在大型数据集中,姓名全部大写,姓在前,偶尔带有后缀(即)
JUDE, RICHARD J. MR.
在较小的数据集中,它们采用标准的“名字姓氏”格式,没有逗号或后缀。每个名字都有相关的变量,例如他们给政治候选人多少钱,或者他们为哪家公司工作。
df1$x <- c("JAYSHREE, JOHNSON D. JR.", "JAMESON, KATHERINE", "TOMMEND, LEONARD"),
df1$p <- c(100, 200, 300)
df2$y <- c("Leo Tommend", "Jay Johnson", "Kathy Jameson")
df2$c <- c("Apple", "Google", "Facebook")
假设 x 有几百万行,y 有几千行。我已经尝试过 grepl、pmatch 和另一个教程 (here) 中的专用算法,但是当我尝试这些时 R 挂起。我已经用 data.table 加载了 X 框架以提高速度。
如果有帮助的话,我宁愿向合并的数据框添加许多行。如果我能做些什么来让这个问题更容易回答,请在 cmets 中告诉我。谢谢你的帮助
[更新]
感谢评论者,我能够将匹配次数减少到大约 20,000 次,但这对很多人来说仍然很遥远。我已经包含了两个文件的链接。这两个文件是1)。 2012 年和 2) 在美国进行政治捐款的每个人。每个互联网创始人的名字。
https://www.dropbox.com/sh/x6tk1pujvfn0fnb/AACQyuICbJPR7VdDf3bbdIwwa?dl=0
当我应用@BondedDust 的代码时,它显着缩小了!但仍有几十个重名。因此,例如,如果“Aaron”创立了一家公司,则将添加名为“Aaron”的每个人,并且新文件假定 100 个人创立了同一家公司,每个“Aaron”都捐赠给了不同的政治家。
目标是仅将每个互联网创始人的独特实例与其政治贡献相匹配。我可能需要在匹配算法中添加更多数据,而不仅仅是他们的姓名(可能包括他们的位置,但这是有问题的,因为许多互联网创始人有多个家)
希望对你有帮助!
【问题讨论】: