根据另一个数据框中的列删除行

3
有没有一种方法可以根据另一个数据框的列删除数据框中的行?
例如,数据框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

在这种情况下,我想要扫描Dataframe 1中的列1,查找是否存在与Dataframe 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
1个回答

9
使用%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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接