【问题标题】:Merge by similar columns - R [duplicate]按相似列合并 - R [重复]
【发布时间】:2019-10-10 17:16:04
【问题描述】:

这是一个非常模糊的问题,但我想知道 R 中是否有某种函数或包可以合并或识别两列或多列中相似/相同的观察结果(甚至可能评估每个观察结果彼此之间的相似程度) .我有两个凌乱的数据集,其中一些列具有一些唯一标识符,但两者之间有很多拼写或小的差异。例如,您有一个这样的列:

c1 <- c("ELIZA 2A", "aaab", "Unique New York", "I slith the Sheeth", "fdasa", "Yellow leather")

c2<- c("ELIZA", "fjdkaldjlk", "Unique NY", "Slith Sheeth", "Y. Leather")

在这种情况下,c1 中的第 1、3、4 和 6 个元素与 c2 中的第 1、3、4、5 个元素相似。我想要某种函数或算法来显示它,也许显示它们有多相似,然后通过 c1 或 c2 合并它们。这些数据集有超过 15,000 个观察值,行更杂乱,但这只是一个例子。我希望这是有道理的。

感谢您的帮助!

【问题讨论】:

  • 这种事情总是很棘手。看看基础 R 中的 adiststringdist 包。

标签: r function merge


【解决方案1】:

我们可以使用fuzzyjoin

library(fuzzyjoin)
stringdist_inner_join(df1, df2, by = c("c1" = "c2"))

在CMET中注明的@gersht,选择methodmax_dist @ @ optionation进行加入

【讨论】:

  • 这不起作用,或者根本不起作用,除非您还使用methodmax_dist。设置method = "cosine"max_dist = .33 返回完美连接。
  • 感谢您提供这个软件包,有趣的是,我实际上是为了临床数据而这样做的。但是,当我尝试使用我的示例时,它给了我一个空数据框:/
  • @Mr.Biggums 阅读我的评论以使事情正常进行。 Akrun 可能会在他/她有机会时进行编辑。
  • @gersht 没错。在您发表评论之前,我正在考虑更新。但是,我认为 OP 只显示假数据
  • @Mr.Biggums 是的,没错,因为它是基于距离的,有时通过调整这些参数会改变你得到的输出
猜你喜欢
  • 2020-06-24
  • 2018-08-09
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多