【问题标题】:Matching two columns of different data frames匹配两列不同的数据框
【发布时间】:2016-05-19 06:02:35
【问题描述】:

如何使用 R 匹配两列不同的数据框?匹配的值应该在同一位置对齐,缺失的值将是 NA。

输入:

df1$A: w x y 
df2$B: x y z 

预期的输出数据帧:

w  x y NA
NA x y z 

【问题讨论】:

标签: r merge


【解决方案1】:

应该有更好的方法来表示这一点,但现在我可以弄清楚这一点。正如@akrun 在 cmets 中提到的,您可以使用match

unique(rbind(cbind(as.character(df1$A), as.character(df2$B[match(df1$A, df2$B)])), 
             cbind(as.character(df2$B), as.character(df1$A[match(df2$B, df1$A)]))))



#    [,1] [,2]
#[1,] "w"  NA  
#[2,] "x"  "x" 
#[3,] "y"  "y" 
#[4,] "z"  NA  

【讨论】:

    【解决方案2】:

    这很好用……

    df1$B <- ifelse(df1$A %in% df2$B, as.character(df1$A), NA)

    df3 <- merge(df1,df2,by='B',all.x = T,all.y = T)

    【讨论】:

    • 我认为 ifelse 是不需要的,merge(df1, df2, by.x = 'A', by.y = 'B', all = TRUE) 会做得很好,只要我能判断 atm。
    • @ProcrastinatusMaximus 好吧,这只是给了我 (A: w x y z) 作为单列数据框输出...你确定它有效吗?
    • 取决于 OP 真正想要的是什么(atm 不清楚)
    猜你喜欢
    • 2019-02-14
    • 2021-10-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多