假设我有一个非常大的数据表,其中一列是" ManufacturerName"。数据没有统一输入,所以非常混乱。例如,可能会有以下观察结果:
ABC Inc
ABC, Inc
ABC Incorporated
A.B.C.
...
Joe Shmos Plumbing
Joe Shmo Plumbing
...
我正在寻找R中的自动方式,尝试将类似的名称视为一个因素级别。我已经学会了手动执行此操作的语法,例如:
levels(df$ManufacturerName) <- list(ABC=c("ABC", "A.B.C", ....), JoeShmoPlumbing=c(...))
但我试图想出一个自动化解决方案。显然它并不完美,因为我无法预测数据表中的每种类型的排列。但也许可以搜索因子级别,删除标点符号/特殊字符,并根据常见的第一个单词创建级别。或任何其他想法。谢谢!
答案 0 :(得分:0)
查看stringdist
包。对于初学者,你可以这样做:
library(stringdist)
x <- c("ABC Inc", "ABC, Inc", "ABC Incorporated", "A.B.C.", "Joe Shmos Plumbing", "Joe Shmo Plumbing")
d <- stringdistmatrix(x)
# 1 2 3 4 5
# 2 1
# 3 9 10
# 4 6 7 15
# 5 16 16 16 18
# 6 15 15 15 17 1
如需更多帮助,请参阅?stringdistmatrix
或在StackOverflow上搜索模糊匹配,近似字符串匹配,字符串距离函数和agrep
。