我在R中使用merge()函数。我想合并两个数据帧。但是,我对不合并的观察感兴趣。有没有办法生成输出,显示未成功合并的观察结果?
示例:DataframeA = 1138888 obs DataframeB = 1010651 obs 我想看看DataFrame中包含的DataframeB中没有包含哪些obs。
我已阅读merge()文档并查看了all.x,all.y命令。但是,我真的想要一个新的数据框来表示那些不会合并的观察结果。
感谢您提前寻求帮助。
答案 0 :(得分: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