使用两列删除行

  • 本文关键字:两列 删除行 r
  • 更新时间 :
  • 英文 :


使用此选项,可以使用另一个数据帧中的值删除数据帧中存在的数据:

df1[!(df1$name %in% df2$name),]

如果有第二列我想考虑在 df1 中的删除散文示例中,有列名和 id,并且在 df2 中相同,如何检查两列中的值? 试用示例df1[!([df1$name & df1$id] %in% [df2$name & df2$id]),]

我们可以使用

df1[!(paste(df1$name, df1$id) %in% paste(df2$name, df2$id)),]

或者用anti_join

library(dplyr)
anti_join(df1, df2, by = c('name', 'id'))

可能你正在尝试这样做:

df1[!(df1$name %in% df2$name & df1$id %in% df2$id),]

让我们看看这个基本示例中发生了什么:

R> 1:10 %in% 3:6
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE

因此,这种方法会产生一个向量,其中每个元素 1:10 都与元素 3:6 进行检查

虽然这是一个紧凑而令人敬畏的矢量化的东西,但它很少直接用于数据帧操作 - 其中所有向量都堆叠为列。在您的情况下,联接操作可能是一种更直接的方法 - anti_join。

最新更新