我正在尝试合并Mergers& amp;上的两个数据集。收购。它们都包括c.10'000观测值,每个观测值为50-50个变量。一个包含有关实际M& A交易的信息,而另一个包含有关交易如何融资的信息。
问题在于没有明确且唯一的标识符。例如,我可以使用交易宣布的日期,但这不会是唯一的,因为在某些日子里宣布了10笔交易。使用公司名称很困难,因为它们在两个数据集中大多不相同。例如,如果在一个数据集中我找到“Ebay”,在另一个数据集中,同一家公司可以被称为“eBay”,“Ebay Inc”或“Ebay,Inc。”
我一直在使用Excel的模糊查找附加组件,以及协调各种标识符,这些标识符不是唯一的,但在它们的组合中变得有用(例如,日期和国家和SIC行业分类代码等) 。但是我无法像我希望的那样产生尽可能多的比赛。
如果有任何想法或指针可以帮助我更有效地合并数据集,我将不胜感激。
答案 0 :(得分:0)
这可能是一个需要在多次重复迭代中应用群策略的过程。没有单一的模糊匹配将能够第一次捕获它们。最佳策略应缩小手动匹配的可能性。匹配后,将它们排除在进一步的模糊匹配之外。使用各种策略浏览所有记录,尽可能减少不匹配的条目。
至于策略,你提到日期,当天可能有10次合并。现在你只需手动匹配那些10.这就成了一个可管理的块。
使用公司名称很难......
是的,但您可以将日期与Levenshtein Distance(或等效算法)结合起来,对可能的选项进行排名以缩小选项范围。因此,当您按照Levenshtein距离对eBay进行排名时,其中的名称将更加接近。
Levenshtein之外的其他文本比较算法包括Gotoh,Jaro,Soundex,Chapman等。其中一些技术已有几十年的历史,因此找到Excel加载项的机会很高。曾经有一个充满活力的开源组织在Sourceforge.net上研究这些解决方案。
......他们的组合变得有用(例如,日期和国家及SIC行业分类代码等)。
注意SIC代码。这些从来都不一致也不准确。根据谁维护这些代码,您可能无法获得超过4位数的非常准确的值。此外,SIC代码本身也已更新,而公司没有义务根据需要更新/修改它们。最后,SIC代码已被更新的NAICS代码所取代,后者又有几个版本。在每次更改期间,他们都会添加新的行业,例如旧的SIC代码中不存在的社交媒体公司。但是,SIC / NAICS代码可用于通过自匹配消除重复。
......任何有关资源的想法或指示......
SQL Server的文本索引功能具有用于查找匹配项的现成算法。根据您的资源,可能需要探索。
如果此匹配过程将成为例行任务,那么您可以探索通过各种数据集成服务提供的专用ETL产品(提取,转换,加载)。其中一些确保双向更新。但无论解决方案多么复杂,它都基于如上所示的一些简单策略,并且几乎所有策略都包含手动覆盖。