【问题标题】:Merge Function in RR中的合并函数
【发布时间】:2014-02-12 21:08:07
【问题描述】:

我在 R 中使用 merge() 函数。我想合并两个数据帧。但是,我对不合并的观察结果感兴趣。有没有办法产生显示未成功合并的观察结果的输出?

示例:DataframeA=1138888 obs 数据框B=1010651 obs 我想看看哪些obs没有包含在DataframeB中,而哪些obs包含在DataFrameA中。

我已经阅读了 merge() 文档并看到了 all.x、all.y 命令。但是,我真的想要一个新的数据框来代表那些不会合并的观察结果。

感谢您提前提供任何帮助。

【问题讨论】:

  • 可能使用match() 会有所帮助。你能发布一个可重现的例子吗?
  • 是的,match() 函数有效。谢谢!很简单。这就是整天进行分析后发生的事情。非常感谢!
  • 你也可以试试 dplyr 包中的anti_join

标签: r merge


【解决方案1】:

不知道以下解决方案的计算效率如何,但它有效 subset()

df.a<-data.frame(key=sample(1:100,50),"a")
df.b<-data.frame(key=sample(1:100,50),"b")
db.bNOTa<-subset(df.b,!(df.b$key %in% df.a$key))

编辑: 使用match 的另一种解决方案是:

db.bNOTa<-merge(df.b,df.a,all.x=TRUE)
db.bNOTa<-subset(db.bNOTa,!is.na(db.bNOTa[,3]))

在 MySQL 中,这将是一个左连接,如下所示: SQL JOIN To Find Records That Don't Have a Matching Record With a Specific Value

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 2021-02-12
    • 1970-01-01
    • 2021-12-31
    • 2020-06-28
    • 2019-04-05
    • 1970-01-01
    • 2022-06-28
    • 2014-08-13
    相关资源
    最近更新 更多