【发布时间】:2016-09-14 12:01:45
【问题描述】:
我有一个这样的数据框
> 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 和包中有很多很棒的函数可以解决字符串匹配问题,但我坚持为这种匹配和替换找到一个单一的解决方案。 我不在乎哪个事件会取代其他事件,例如“Investment LLC”或“Invezzstment LLC”都一样好。只需要它们一致。
是否有任何单一的多合一功能或循环?
【问题讨论】:
-
你能描述一下你到目前为止所做的尝试吗?例如,为什么 base::agrep 不适合你?
-
亲爱的@Calimo,base::agrep 在查找相似字符串方面工作得很好,但我不能强迫他逐行替换字符串。我尝试了一些 for 和 while 循环,但没有运气。算法应该如下: 1) R 在向量中找到一个字符串 2) 将它与其他字符串进行比较是向量 3) 每个与其相似的字符串(提供一些距离测量),必须用该字符串替换。跨度>
-
请发布您已有的代码,以便我们从那里获取。顺便说一句,我从您对答案的评论中了解到,选择拼写错误的
Invezzstment LLC可以吗? -
@Calimo,我删除了这段代码,并且(不幸的是)在提交期间它没有保存在我的 git 中。无论如何,它几乎没有用,因为它是无效的。我记得我使用了
sapply和部分匹配功能(我认为agrep)。 “Invezzstment LLC”完全没问题。事实上,Invezzstment LLC 和 Investment LLC 是一回事;我需要 R 取其中的 any 并替换所有其他出现,所以我有 one 一个很好的分类变量用于这一类别。当您有超过 50000 条记录和 1200 个唯一值时,找出任何拼写错误的变量将是一项繁琐的工作。
标签: r string-matching data-cleaning