匹配R中2列的公司名称

时间:2014-06-26 21:15:41

标签: r

我从SEC Edgar(http://www.sec.gov/Archives/edgar/full-index/)下载了一份上市公司名单。

我正在尝试查找不同列表中的公司之间的匹配,这可能会在案例和标点符号方面有所不同。有关在两列之间匹配公司名称的建议吗?

以下是一个例子:

> df.a 
   Company 
"Flowers David"
"Danone Inc."

> df.b
Company
"1 800 FLOWERS COM INC"
"FLOWERS DAVID J A"
"FLOWERS FOODS INC"

我试图以一种有意义的方式找到两者之间的匹配。所以只有“FLOWERS DAVID J A”才会匹配。

1 个答案:

答案 0 :(得分:2)

有几种可能性:

agrep函数将进行近似匹配,您可以使用每个术语作为"模式"循环遍历第一个列表。在第二个列表中查找近似匹配项。您可能需要先对列表进行预处理,删除所有标点符号,将所有字母转换为小写字母等。adist函数可以使用它来显示距离。帮助页面上有更多信息

有些工具可以计算字符串之间的相似性或不相似性,tm包中的dissimilarity函数是1。您可以使用它来衡量两个向量之间的差异,然后寻找最不相似的对。