从这个问题 Matching multiple columns on different data frames and getting other column as result
如果我想在两个数据帧的多列中选择一个不匹配的行。
output <- merge(df1, df2, by.x='init', by.y='V2')
结果&lt; - df2 [-output,] 此代码不起作用。
期望输出是来自df2的一行,其输出不匹配。 期望输出应为
V1 V2 V3
10 1 69094 medium
11 1 69094 medium
13 1 69095 medium
感谢您的回答
答案 0 :(得分:0)
你可以尝试:
indx <- as.character(interaction(df2)) %in%
as.character(interaction(output[,c(3,1,4)]))
df2[!indx,]
# V1 V2 V3
#10 1 69094 medium
#11 1 69094 medium
#13 1 69095 medium
如果行号不重要,可以:
subset(merge(df2, output, by.x=c("V1", "V2", "V3"), by.y=c("V1", "init", "V3"), all=TRUE), is.na(chr), select=1:3)
或者
library(dplyr)
df1New <- df1
colnames(df1New)[2] <- "V2"
anti_join(df2, df1New, by="V2")
# V1 V2 V3
#1 1 69095 medium
#2 1 69094 medium
#3 1 69094 medium