选择不匹配不同数据框上的多个列并将其他列作为结果的行

时间:2014-09-13 13:39:00

标签: r

从这个问题 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

感谢您的回答

1 个答案:

答案 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