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

标签 r dataframe subset

有没有办法根据另一个数据框的列从数据框中删除行?

例如,数据框 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)

感谢阅读。

最佳答案

使用 %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上找到一个类似的问题: https://stackoverflow.com/questions/38574511/

相关文章:

python - 基于具有不同行数的另一个数据框列向 pandas 数据框添加新列

python - 在同一图上将数据帧绘制为 'hist' 和 'kde'

返回r中符合条件的值

r - 什么文档告诉我们 "["可以用作函数?

r - 根据 R 中的名称从 data.frames 列表中删除 data.frame

r - 连续 y 轴刻度中的真负号

r - 根据行名匹配两个数据框并添加 NA

c++ - 如何检查一个 vector 是否是另一个 vector 的子集?

r - 如何访问存储在包中的 R markdown

r - 为每个 ID 查找重叠日期并为重叠创建一个新行