使用“%in%”对多列进行dplyr过滤

时间:2017-08-10 21:04:56

标签: r statistics dplyr

我有一个包含多列(ID,数字,位置,字段,重量)的数据框(df1)。我还有另一个包含更多信息的数据帧(df2)(ID,PassRate,Number,Weight)。

我正在尝试使用dplyr和%in%来过滤掉df1中与df2具有相同两个值的行。

到目前为止,我有:

df_sub <- subset(df1, df1$ID %in% df2$ID & df1$Weight %in% df2$Weight) 

但这仅仅是第一个条件的子集...任何想法为什么?

1 个答案:

答案 0 :(得分:0)

从问题和示例代码中,不清楚您是否希望df_sub包含df1中的df2匹配的行,或者不匹配的行。 dplyr::semi_join()将返回带匹配的行,dplyr::anti_join()将返回没有匹配的行。

df_sub <- semi_join(x=df1, y=df2, by=c("ID","Weight")) 

df_sub <- anti_join(x=df1, y=df2, by=c("ID","Weight")) 
相关问题