如何删除行在df1存在于df2?

  • 本文关键字:df2 存在 df1 删除行 r
  • 更新时间 :
  • 英文 :


假设我有两个数据帧

df1 <- data.frame (name = c("Mike", "Paul", "Paul", "Henry"),
age = c(20, 21, 22, 23))
df2 <- data.frame (name = c("Sam", "Paul", "Paul", "Bob"),
age = c(26, 30, 22, 23))

我想从df1中删除第3行,因为这一行也存在于df2

在R中最优雅的方法是什么?

使用setdifffromdplyr

library(dplyr)
setdiff(df1, df2)
name age
1  Mike  20
2  Paul  21
3 Henry  23

如果是基于常用列名的子集,则使用anti_join

anti_join(df1, df2)

在本例中,所有列都是公共的,因此默认情况下,它使用by作为完整的列名。如果我们需要一个子集,在by

中指定它
anti_join(df1, df2, by = c('name'))

相关内容

最新更新