2016-07-25 26 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 

DATAFRAME 2(のみ1列):このsitutationで

Genes 
AAA 
BBB 
CCC 
DDD 
EEE 
FFF 

、Iは、データフレームの任意のマッチのためにデータフレーム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%を使用して、最初のデータフレームのどの要素が2番目のデータフレームに含まれていないかを識別し、結果の論理ベクトルを1番目のデータフレームに渡してサブセットに渡します。

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

関連する問題