【发布时间】:2021-07-10 03:24:34
【问题描述】:
我是 R 和编码领域的新手,请原谅我在这里拼错了一些或更多行话 (cmiiw)。
我面临着在数据框中清理城市名称的挑战。
尝试使用GetCloseMatches、strdist_inner_join(我相信用fuzzywuzzy)和dplyr 风格,但仍然不能满足我的需求。
第一次尝试:
vec3 = unlist(world.cities$name)
str1 = c('Jakarta Utara')
GetCloseMatches(string = str1, sequence_strings = vec3, n = 1L, cutoff = 0.6)
但它每次只能“翻译”一个城市,你知道如何让它对所有数据框重复吗? for 循环还是函数?
第二次尝试:
df2 <- df[1:10,] %>%
stringdist_left_join(world.cities, by = c(cust_city = "name"), max_dist = 1)
它显示了大部分城市,但缺少“Jakarta Utara”
我正在使用两个待检查城市的数据库/数据框(cmiiw)(如果您看到右侧的“查找”表,它有数百个城市名称,而不仅仅是6个),首先是SHP我强化的文件,第二个是 world.cities$name,两者都做得很好,但不知何故,它一次只出现一个城市。即:如果我使用 SHP 文件,则会出现 Jakarta Utara 但不会出现 Karawang,反之亦然。
我的目标是将左边的词替换为右边的词(1到2)
左>右
加拉旺 - 到加拉旺
雅加达至雅加达
雅加达到雅加达等
你知道最有效的方法吗?
非常感谢您的帮助!
问候
【问题讨论】:
-
嗯,也许你可以使用
Vectorize对函数进行矢量化(我发了一篇关于它的帖子here)? -
这里有几个解决方案。如果您的问题由我们中的一个人回答。请通过单击对您最有帮助的答案左侧的复选标记来关闭您的问题。谢谢。
标签: r city stringdist fuzzyjoin