删除另一个数据框中存在的行?

bio*_*ard 35 r duplicate-removal delete-row dataframe corresponding-records

我有以下两个数据框(示例):

DF1:

name    profile    type    strand
A       4.5        1       +
B       3.2        1       +
C       5.5        1       +
D       14.0       1       -
E       45.1       1       -
F       32.8       1       -
G       19.9       1       +
Run Code Online (Sandbox Code Playgroud)

DF2:

name
A
B
C
G
Run Code Online (Sandbox Code Playgroud)

我想删除行df1对于其df1$name = df2$name获得如下:

输出:

name    profile    type    strand
D       14.0       1       -
E       45.1       1       -
F       32.8       1       -
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我使用哪一段代码会有很多帮助,起初看起来很简单但是我从昨天起就搞乱了.

csg*_*pie 40

你需要%in%操作员.所以,

df1[!(df1$name %in% df2$name),]
Run Code Online (Sandbox Code Playgroud)

应该给你你想要的东西.

  • df1$name %in% df2$name测试值df1$name是否在df2$name
  • !运营商逆转的结果.


Hug*_*ugh 26

这有时被称为反连接:

library(dplyr)
anti_join(df1, df2, by = "name")
Run Code Online (Sandbox Code Playgroud)