我有一个地址列表。这些地址是由不同的用户输入的,因此写入相同地址的方式有很多差异。例如,
"andheri at weh pump house", "andheri pump house","andheri pump house(mt)","weh andheri pump house","weh andheri pump house et","weh, nr. pump house"
上述向量有 6 个地址。而且几乎所有的都是一样的。我正在尝试找到这些地址之间的匹配项,以便我可以将它们组合在一起并重新编码。
我试过使用agrep
和 stringdist 包。使用 agrep 我不确定我是否应该将每个地址作为一个模式并将其与其余地址匹配。从 stringdist 包我做了以下事情:
library(stringdist)
nsrpatt <- df$Address
x <- scan(what=character(), text = nsrpatt, sep=",")
x <- x[trimws(x)!= ""]
y <- ave(x, phonetic(x), FUN = function(.x) .x[1])
以上给了我错误:
In phonetic(x) : soundex encountered 111 non-printable ASCII or non-ASCII
characters.
不确定我是否应该从字符向量中删除这些元素或将它们转换为其他格式。
用 agrep 我试过:
for (i in 1:length(nsrpattn)) {
npat <- agrep(nsrpattn[i], df$address, max=1, v=T)
}
字符向量的长度约为 25000,它会继续运行并使机器停止运行。
如何有效地为每个地址找到最接近的匹配项。