我有一個大型的數據集,有一百萬個觀察值,用一個已定義的觀察類型鍵入。在數據集中,有大約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」是否更合適。 , –