2013-09-26 56 views
0

合併如果我有兩個簡單的dataframes:找出什麼樣的價值觀沒有R中

a <- 1:10 
b <- c("a","b","c","d","e","f","g","h","i","j") 
df1 <-data.frame(a,b) 

c <- 1:7 
d <- c("k","l","m","n","o","p","q") 
df2 <-data.frame(c,d) 

...我希望通過「一」和「C」來合併它們DF1和DF2分別使用:

df3= merge(df1, df2, by.x = "a", by.y = "c") 

我該如何去製作df1中沒有合併的行數據框?例如:

a b 
8 8 h 
9 9 i 
10 10 j 

任何幫助將受到感謝。

編輯 使用的意見建議,我可以這樣做:

check = setdiff(df1$a, df2$c) 

這是偉大的,因爲我得到8:10這是正確的,但我確實需要列出DF1另一列。 ..這也可以用setdiff來完成嗎?

+1

''df3 $ a''與'df1 $ a'可能'setdiff'? –

+0

setdiff看起來很有趣@Carl Witthoft - 我可以用它來找出其他列的數字嗎? –

+0

'df1 [1:dim(df1)[1]%in%check,]' – TheComeOnMan

回答

2

查找all參數。

df3= merge(df1, df2, by.x = "a", by.y = "c", all.x = TRUE) 

將返回此。現在您可以在d上過濾以獲取您要查找的條目。

a b d 
1 1 a k 
2 2 b l 
3 3 c m 
4 4 d n 
5 5 e o 
6 6 f p 
7 7 g q 
8 8 h <NA> 
9 9 i <NA> 
10 10 j <NA> 
0

每評論:

check = setdiff(df1$a, df2$c) 

alldiff <- df1[1:dim(df1)[1] %in% check,] 

(注意dim(df1)[1]是一樣的,也就是說,length(df1$a)

以信譽爲Codoremifa第二行。

相關問題