2016-07-25 121 views
1

有沒有基於另一個數據框的列從數據框中刪除行的方法?根據另一個數據框中的列刪除行

例如,數據幀1:

 Gene CHROM POS REF ALT N_INFORMATIVE  Test  Beta  SE 
AAA  1 15211 T G   1481 1:15211 -0.0599805 0.112445 
LLL  1 762061 T A   1481 1:762061 0.2144100 0.427085 
CCC  1 762109 C T   1481 1:762109 0.2847510 0.204255 
DDD  1 762273 G A   1481 1:762273 0.0443946 0.119924 

數據幀2(僅1列):

Genes 
AAA 
BBB 
CCC 
DDD 
EEE 
FFF 

在這種situtation,我想掃描數據幀1,列1到數據幀的任何匹配2,並刪除匹配的行。

他們需要的是精確匹配,其結果將是這樣的:

 Gene CHROM POS REF ALT N_INFORMATIVE  Test  Beta  SE 
LLL  1 762061 T A   1481 1:762061 0.2144100 0.427085 

我已經試過這種變化,但並未奏效:

NewDataframe <-!(Dataframe1$Gene==Dataframe2$Genes) 

謝謝閱讀。

+2

也許使用'%in%'代替'=='。它的幫助頁面是'?\'%in%\'' – Frank

回答

2

使用%in%來標識來自第一數據幀的哪些元素不包含在第二數據幀中,然後將得到的邏輯向量傳遞到第一數據幀以子集。

dat1 <- data.frame(id = LETTERS[1:10], stringsAsFactors = FALSE) 
dat2 <- data.frame(id = c("B", "D"), stringsAsFactors = FALSE) 
dat1[!dat1$id %in% dat2$id, , drop = FALSE] 
# id 
# 1 A 
# 3 C 
# 5 E 
# 6 F 
# 7 G 
# 8 H 
# 9 I 
# 10 J 
+0

完美。謝謝!!! – mfk534

相關問題