2013-04-04 48 views
0

我有兩個數據框與基因組數據,我需要刪除數據框1中的所有行,其中「功能」列中的條目等於條目在數據幀的一排「功能」一欄2.刪除數據框的行列條目與另一個數據框的列重疊

df1 <- data.frame(feature=c("ENSG419","ENSG1617","ENSG1629","ENSG16230"),distance=c(9833,2460,50538,51162),origin=c("e2","e2","e2","e2")) 
df2 <- data.frame(feature=c("ENSG4939","ENSG1617","ENSG5844","ENSG10292"),distance=c(8441,8970,10320,139),origin=c("etoh","etoh","etoh","etoh")) 

> df1 
    feature distance origin 
1 ENSG419  9833  e2 
2 ENSG1617  2460  e2 
3 ENSG1629 50538  e2 
4 ENSG16230 51162  e2 
> df2 
    feature distance origin 
1 ENSG4939  8441 etoh 
2 ENSG1617  8970 etoh 
3 ENSG5844 10320 etoh 
4 ENSG10292  139 etoh 

我希望得到這樣的:

feature distance origin 
1 ENSG419  9833  e2 
2 ENSG1629 50538  e2 
3 ENSG16230 51162  e2 

我試圖通過這兩個數據幀綁定到刪除重複項新數據幀並隨後提取具有新數據fr的相同特徵的行AME。現在我想刪除所說的從原始數據幀1

df_new <- rbind(df1,df2) 
df_new[duplicated(df_new[,1]),] 

它也不太行的工作,我敢肯定有一個更好的解決辦法,反正。我會非常感謝任何建議!

回答

3

試試這個:

df1[!df1$feature %in% df2$feature, ] 
+0

謝謝你,它的工作原理! – atreju 2013-04-04 13:49:28

2

我會從兩者中提取特徵,對這些集合進行差異化處理,然後根據結果對第一個數據幀進行子集合處理。

only1 <- setdiff(df1$feature, df2$feature) 
df_sel <- df1[df1$feature %in% only1] 

但我認爲,阿朗的解決方案是一個oneliner :)

相關問題