2014-09-13 45 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

相關問題