我有一个大型的数据集,有一百万个观察值,用一个已定义的观察类型键入。在数据集中,有大约900,000个观测类型异常的观测,其中50个可接受的观测类型有〜850个(不正确)的变化。r stringdist或levenshtein.distance替换字符串
keys <- c("DAY", "EVENING","SUNSET", "DUSK","NIGHT", "MIDNIGHT", "TWILIGHT", "DAWN","SUNRISE", "MORNING")
entries <- c("Day", "day", "SUNSET/DUSK", "DAYS", "dayy", "EVEN", "Evening", "early dusk", "late day", "nite", "red dawn", "Evening Sunset", "mid-night", "midnight", "midnite","DAY", "EVENING","SUNSET", "DUSK","NIGHT", "MIDNIGHT", "TWILIGHT", "DAWN","SUNRISE", "MORNING")
使用GSUB类似于挖地下室用一只手铲,并以我个人的情况下,一个破碎处理铲因为我很新的与R和复杂的正则表达式。简单的回退(对我来说)是为每个接受的观察类型写一个gsub语句,但这似乎不必要的繁琐,因为它需要50条语句。
我想用levenshtein.distance
或stringdist
用最短距离字符串替换违规条目。运行z <- for (i in length(y)) { z[i] = levenshtein.distance(y[i], x)}
不起作用,因为它试图将(长度(x))结果传递给每个y [i]。
如何以最小距离返回结果?我已经看到function(x) x[2]
返回一系列的第二个结果,但如何获得最低?
你可能想看看)adist的'文档('。 – RHertel
将“SUNSET”和“DUSK”与“SUNSET/DUSK”进行比较时,您需要指定您认为正确的匹配, –
“SUNSET/DUSK”应通过距离方法评估为“SUNSET”。数据集的性质使我无法确定“DUSK”或“SUNSET”是否更合适。 , –