【发布时间】:2021-11-04 00:46:00
【问题描述】:
我是 R 新手,我一直在尝试模糊匹配两个大型数据集,而不会使我的计算机崩溃。起初花了很长时间,所以我将数据框拆分为一个列表并使用了purrr:map,但它仍然需要很长时间并且无法正常工作。
所以现在我在两个数据集中拆分名称,然后逐个列表循环。
假设我有两个数据集。
list.a <- data.frame(name=c("aa","bb","cc","dd","ee","ff","gg") )
list.b <- data.frame(name=c("ab","cb","ff","dd","ee","ff","gg"))
我用第一个字符串作为名字的子串,然后用字母分割它。
list.a <- list.a %>%
mutate(id_a=str_sub(name, 1,1))
list.b <- list.b %>%
mutate(id_a=str_sub(name, 1,1))
list.a <- split(list.a, list.a$id_a)
list.b <- split(list.b, list.b$id_a)
这个拆分函数会按名称的第一个字母给我一个拆分数据列表。
这对我来说是个麻烦的部分,我不知道该怎么做。我正在尝试通过名称的 a、b、c、d 进行模糊匹配(所以名称在两个集合中都以 a 开头,然后移动到 b 名称,依此类推)。
我正在尝试通过“名称”模糊加入两个数据集中以相同字母开头的每个列表。
purrr::map(list.a, ~stringdist_inner_join(x=., y=list.b,
by="name",
ignore_case=FALSE,
method="jw",
max_dist=0.25))
我的预期输出是,一旦这些数据集通过模糊匹配连接起来,最后会将它们组合在一起。
感谢您的任何建议!
【问题讨论】:
-
你的预期输出是什么?
-
嗨,马特,我刚刚编辑了我的帖子。基本上我用名字的第一个字母分割了两个数据。然后我想模糊加入以相同名称字母开头的每个拆分数据。我想这样做是为了减少时间而不是出错。然后,输出将附加列表到一个完整的数据帧中。