部分字符串匹配&在R中更换

时间:2016-05-18 06:48:34

标签: r string-matching data-cleansing

我有一个像这样的数据框

> myDataFrame
           company
1   Investment LLC
2    Hyperloop LLC
3 Invezzstment LLC
4   Investment_LLC
5   Haiperloop LLC
6   Inwestment LLC

我需要匹配所有这些模糊字符串,因此最终结果应如下所示:

> myDataFrame
           company
1   Investment LLC
2    Hyperloop LLC
3   Investment LLC
4   Investment LLC
5    Hyperloop LLC
6   Investment LLC

所以,实际上,我必须为分类变量解决部分匹配和替换任务。基础R和包中有很多很棒的函数来解决字符串匹配问题,但我很难找到这种匹配和替换的单一解决方案。 我不关心哪种情况会取代其他情况,例如“投资有限责任公司”或“投资有限责任公司”都同样罚款。只需要它们一致

是否有任何单一的一体化功能或循环?

2 个答案:

答案 0 :(得分:0)

如果你有正确拼写的矢量,agrep会使这个变得相当容易:

myDataFrame$company <- sapply(myDataFrame$company, 
                              function(val){agrep(val, 
                                                  c('Investment LLC', 'Hyperloop LLC'), 
                                                  value = TRUE)})

myDataFrame
#          company
# 1 Investment LLC
# 2  Hyperloop LLC
# 3 Investment LLC
# 4 Investment LLC
# 5  Hyperloop LLC
# 6 Investment LLC

如果你没有这样的矢量,如果正确的拼写比其他拼写重复得多,你很可能会聪明地应用adist甚至只table。是(虽然不在这里)。

答案 1 :(得分:0)

所以,过了一段时间我最终得到了这个愚蠢的代码。 注意完全自动化替换过程,因为每次正确的匹配应该由人验证,并且每次我们需要微调agrep {{ 1}}参数。我完全相信有办法让它变得更好更快,但这有助于完成工作。

max.distance