2014-09-13 37 views
-1

从这个问题 Matching multiple columns on different data frames and getting other column as result选择一行并不在不同的数据帧匹配的多个列,并且让其他列结果

如果我要选择一个行不以多列从两个数据帧相匹配。

output <- merge(df1, df2, by.x='init', by.y='V2') 

结果< - DF2 [-output,] 此代码不能正常工作。

期望输出是来自df2的行,它们在输出中不匹配。 的期望输出应该是

V1 V2  V3 

10 1  69094 medium 
11 1  69094 medium 
13 1  69095 medium 

谢谢所有的答案

+0

在提供的示例中,'df1'和'output'具有相同的行,但输出具有两个附加列。所以,目前还不清楚你的预期产出是什么。 – akrun 2014-09-13 13:46:22

+0

我假设你可能指的是'df2'。 by.y = c(“V1”,“init”,“V3”),all = TRUE ),is.na(chr),select = 1:3)'或者你可以使用'dplyr'中的'anti_join'。 – akrun 2014-09-13 13:55:16

+0

我想我问一个问题不清楚,所以我会修改我的问题@ akrun – user3917101 2014-09-13 14:02:11

回答

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 
+0

非常感谢你@ akrun.That是我想要做的。 – user3917101 2014-09-14 10:14:15

相关问题