2014-02-12 88 views
0

我在R中使用merge()函數我想合併兩個數據幀。但是,我對不合並的觀察結果感興趣。有沒有辦法產生顯示未成功合併的觀察結果的輸出?R中的合併函數

示例:DataframeA = 1138888 OBS DataframeB = 1010651個OBS 我想了解哪個未包括在被包括在該DataFrameA OBS DataframeB。

我已通讀merge()文檔並看到all.x,all.y命令。但是,我確實需要一個代表那些不會合並的觀察結果的新數據框。

非常感謝您的幫助。

+1

很可能使用'match()'會有所幫助。你能發佈一個可重複的例子嗎? –

+0

是的match()函數工作。謝謝!很簡單。這是整天進行分析後發生的情況。非常感激! – Alyssa

+1

你也可以嘗試** dplyr **包中的'anti_join'。 – joran

回答

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