R清理数据-amatch可合并来自2个单独数据帧的接近匹配
我很难弄清楚R中的amatch函数 2数据框架、受访者(有用户输入)和普查。我已经将用户输入与人口普查中的完美匹配进行了规范化和合并。我现在想做一个“最接近的匹配”来缩小剩下的(到目前为止还没有匹配的)受访者条目。我是否在merge函数中嵌套了amatch?我已经阅读了amatch文档并进行了广泛的搜索,但未能使其正常工作 我甚至无法获得正确/错误的输出,尝试按照文档进行操作:R清理数据-amatch可合并来自2个单独数据帧的接近匹配,r,data-cleaning,R,Data Cleaning,我很难弄清楚R中的amatch函数 2数据框架、受访者(有用户输入)和普查。我已经将用户输入与人口普查中的完美匹配进行了规范化和合并。我现在想做一个“最接近的匹配”来缩小剩下的(到目前为止还没有匹配的)受访者条目。我是否在merge函数中嵌套了amatch?我已经阅读了amatch文档并进行了广泛的搜索,但未能使其正常工作 我甚至无法获得正确/错误的输出,尝试按照文档进行操作: library(stringdist) closest <- amatch(respondent, census
library(stringdist)
closest <- amatch(respondent, census, nomatch = 0, match NA = TRUE)
尝试使用
maxdist
值:
stringdist::amatch(respondent$resp_input, census$census_title, maxDist = 5)
从?amatch
maxDist-如果x中的元素的距离大于maxDist,则它们将不会与表中的元素匹配
字符串之间的最大距离取决于您选择的比较两个字符串的方法。还要注意,
amatch
返回最接近匹配的索引 除了Ronak的答案之外,还可以查看fuzzyjoin
包,该包简化了在模糊字符串匹配中加入的过程:
fuzzyjoin::stringdist_join(
x = respondent,
y = census,
by = c("resp_input" = "census_title"),
method = "osa",
ignore_case = TRUE,
max_dist = 3,
mode = "inner"
)
#> respondent resp_input code census_title
#> 1 196 Bramppton 3521010 Brampton
#> 2 197 Tornto 3520005 Toronto
#> 3 209 Kleowna 5935010 Kelowna
#> 4 215 Caledonn 3521024 Caledon
#> 5 229 watsonlake 6001003 Watson Lake
您可以使用各种和
max_dist
参数来获得数据的最佳结果。太棒了:)max_dist=2似乎是我的数据集的神奇数字我相信这是一个很好的解决方案,但我太笨了,无法找到一个匹配来处理我的数据
fuzzyjoin::stringdist_join(
x = respondent,
y = census,
by = c("resp_input" = "census_title"),
method = "osa",
ignore_case = TRUE,
max_dist = 3,
mode = "inner"
)
#> respondent resp_input code census_title
#> 1 196 Bramppton 3521010 Brampton
#> 2 197 Tornto 3520005 Toronto
#> 3 209 Kleowna 5935010 Kelowna
#> 4 215 Caledonn 3521024 Caledon
#> 5 229 watsonlake 6001003 Watson Lake