我有一个包含多列(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)
但这仅仅是第一个条件的子集...任何想法为什么?
答案 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"))