我试图合并两个大型数据集。公共变量,名字和姓氏,在数据集之间的拼写方式不同,并且有许多重复,即使在拼写相似的名称之间也是如此。我已经包含了文件的下载链接和下面的一些R代码。我将介绍我尝试过的以及出了什么问题。
有一些R教程试图解决(常见的)记录链接问题,但没有处理大型数据集。我希望SO社区可以帮助我解决这个问题。
The first dataset是一个大文件(数十万 联邦选举委员会的政治捐款。
第二个是名称和公司的自定义数据集 每个互联网公司的创始人(~5,000行) https://www.dropbox.com/s/lfbr9lmurv791il/010614%20CB%20Founders%20%20-%20CB%20Founders.csv?dl=0
- 尝试与正则表达式匹配的代码 -
由于以前的SO建议的帮助,我的第一次尝试是使用agrep和常规字符串匹配。这缩小了名称,但导致了太多的重复
#Load files#
expends12 <- fread("file path for FEC", sep="|", header=FALSE)
crunchbase.raw <- fread("file path for internet founders")
exp <- expends12
cr <- crunchbase.raw
#user regular string matching#
exp$xsub= gsub("^([^,]+)\\, (.{7})(.+)", "\\2 \\1", tolower(expends12$V8))
cr$ysub= gsub("^(.{7})([^ ]+) (.+)", "\\1 \\3", tolower(cr$name))
#merge files#
fec.merge <- merge(exp,cr, by.x="xsub", by.y="ysub")
结果是6,900行,因此有很多重复项。许多行是与互联网创始人具有相似名称的人,例如亚历山大·布莱克,但来自不同的州并且具有不同的职称。所以,现在是一个寻找真正的互联网创始人的问题。
缩小结果的一个选项是按状态过滤结果。所以,我可能只会选择来自加利福尼亚州或纽约州的亚历山大·布莱克,因为这是大多数创业公司成立的地方。我也可能只选择某些职位,如CEO或创始人。但是,许多创始人在他们的公司之前和之后都有工作,所以我不想过多地缩小职位。
或者,有一个r包,RecordLinkage,但据我所知,数据集之间需要有类似的行和列,这是此任务的不起作用
我熟悉R,但统计知识和编程能力有限。非常感谢任何一步一步的帮助。谢谢,如果下载数据有任何问题,请告诉我。