【问题标题】:R: fuzzy merge two data frameR:模糊合并两个数据框
【发布时间】:2019-05-31 18:49:39
【问题描述】:

我有 2 个数据框。

首先,

abc <- data.frame(bin1 = c("0-25K", "25K-50K", "50K+"), group1 = c(1, 1, 2), bin2 = c("0-25", "25-50", "50+"), group2 = c(1, 2, 2))

pqr <- data.frame(bin1 = c("1_0-25K", "2_25K-50K", "3_50K+"),bin2 = c("0,25", "25,50", "50+"))

我想合并 abc 和 pqr 得到

pqr <- data.frame(bin1 = c("1_0-25K", "2_25K-50K", "3_50K+"), group1 = c(1, 1, 2), bin2 = c("0,25", "25,50", "50+"), group2 = c(1, 2, 2))

我查看了一些较早发布的问题,但没有一个对我有用。

Merging two Data Frames using Fuzzy/Approximate String Matching in R

【问题讨论】:

  • 我不太确定我掌握了模糊匹配应该如何工作的逻辑。你能更具体一点吗?我想确保我了解您的基本原则是什么,以便我们帮助您的任何解决方案都能被适当地推广。
  • 另外:使用fuzzyjoin 包的想法是什么?其实我现在才知道!我喜欢 StackOverflow 的一件事。
  • 试试pqr %&gt;% mutate(bin2 = str_replace(bin2, ",", "-")) %&gt;% left_join(abc, by = 'bin2') %&gt;% transmute(bin1 = bin1.x, bin2, group1, group2)
  • 这只是一个虚拟数据,考虑一个适合所有模糊匹配和合并替代方案的解决方案。无论是 -/,还是一个向量中的字符多于另一个
  • 我正在尝试创建一个数据框,在其中加入 ob 箱,以获取数据框中相同箱的分组。这是根本动机

标签: r fuzzyjoin


【解决方案1】:

这行得通:

library(fuzzyjoin)
pqr <- pqr %>% stringdist_inner_join(abc, by = c(bin1 = "bin1"))

【讨论】:

  • 把它放在 for 循环中,它适用于你想要的所有列
猜你喜欢
  • 2017-12-17
  • 2014-10-04
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
相关资源
最近更新 更多