我从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”才会匹配。
答案 0 :(得分:2)
有几种可能性:
agrep
函数将进行近似匹配,您可以使用每个术语作为"模式"循环遍历第一个列表。在第二个列表中查找近似匹配项。您可能需要先对列表进行预处理,删除所有标点符号,将所有字母转换为小写字母等。adist
函数可以使用它来显示距离。帮助页面上有更多信息
有些工具可以计算字符串之间的相似性或不相似性,tm包中的dissimilarity
函数是1。您可以使用它来衡量两个向量之间的差异,然后寻找最不相似的对。