2016-08-04 87 views
2

我們可以使用df = rbind(df, another_df)來組合2個數據幀。如果它需要從df中刪除another_df,其中dfanother_df的rownames不匹配。刪除r中某個數據幀的記錄子集

df = data.frame(A=c('a','aa','aaa'), B=c('b','bb','bbb')) 
rownames(df) 

another_df =data.frame(A=c('aa','a'), B=c('bb','b')) 
rownames(another_df)=c('3','4') 
+1

請出示一個可再現的小例子和預期輸出。我會從'dplyr'檢查'?setdiff'或'anti_join' – akrun

+0

以上這個評論可以幫助你做出一個好的例子http://stackoverflow.com/help/mcve –

+0

謝謝akrun,dplyr的anti_join做了這個工作:)我想接受作爲答案,如果你發佈:) – SaikiHanee

回答

2

我們可以使用anti_join

library(dplyr) 
anti_join(df, another_df) 

或者,如果這是基於rownames,然後%in%可用於創建邏輯索引子集行

df[!row.names(df) %in% row.names(another_df),] 
0

你可以在不使用任何包的情況下用setdiff很輕鬆地做到這一點。

df = data.frame(A=c('a','aa','aaa'), B=c('b','bb','bbb')) 
another_df =data.frame(A=c('aa','a'), B=c('bb','b')) 
s <- df[setdiff(rownames(df),rownames(another_df)),] 

s是你想要的輸出。