2012-02-08 60 views
0

我需要使用之前生成的值提取數據幀的某些部分。例如,我有以下數據:提取數據幀的部分

a<-c(1,2,3,4,6,7,10,12,17,20) 
df1<-data.frame(a) 

我當時想排除這些值(以 「A」,在DF1)從DF2,當他們出現在B列:

b<-c(1,2,3,4,5,6,6,6,7,8,9,10,11,11,11,12,13,14,14:20) 
c<-c(1:25) 
df1<-data.frame(b,c) 

所以,我應該留下與行5,8,9,11等數據幀...

任何人都可以幫助我與代碼從我的數據框(df1)中刪除這些值。

非常感謝。

回答

2

subset()將是一個很好的朋友,你這樣的事情:

subset(df1, !b %in% a) 

(子表達b %in% a測試b每一個元素,以確定它是否是a,返回的向量TRUE S和FALSE上課。!b %in% a只是否定/翻轉這些布爾值,讓你最終與TRUE邏輯矢量索引S的df1行,你想保留(即那些出現在)。)

+1

刪除了我的答案來代替這個。你可以用'[]'類似地子集。 'df1 [!df1 $ b%in%a,]' – Justin 2012-02-08 17:21:45

+0

@Justin - 好的,但你的回答同樣好,在編程中使用'['和''subset'實際上通常更好(例如函數內部,[請參閱此處例如](http://stackoverflow.com/questions/6060872/how-to-use-with-within-inside-a-function/6061156#6061156))。 'subset()'確實很適合交互式使用,而且當我新編程時,它肯定會讓我感覺更具人性化。 – 2012-02-08 17:35:12

+1

@ JoshO'Brian謝謝,但你花時間寫了一個完整的答案。當我學習時,除了答案之外,我還讚賞解釋。 – Justin 2012-02-08 17:38:25