【问题标题】:merging on multiple columns R合并多个列 R
【发布时间】:2018-11-10 18:55:34
【问题描述】:

如果这不是重复的,我很惊讶,但我在其他任何地方都找不到答案。

我有两个数据框,data1data2,它们在一列中不同,但其余列相同。我想将它们合并到一个唯一的标识列id。但是,如果来自data2 的ID 在data1 中没有匹配项,我希望将data2 中的条目附加到底部,类似于plyr::rbind.fill(),而不是重命名data2 中的所有相应列如column1.xcolumn1.y。我意识到这不是最清楚的解释,也许我不应该在星期六工作。这是创建两个数据帧的代码,以及所需的输出:

spp1 <- c('A','B','C')
spp2 <- c('B','C','D')
trait.1 <- rep(1.1,length(spp1))
trait.2 <- rep(2.0,length(spp2))
id_1 <- c(1,2,3)
id_2 <- c(2,9,7)

data1 <- data.frame(spp1,trait.1,id_1)
data2 <- data.frame(spp2,trait.2,id_2)
colnames(data1) <- c('spp','trait.1','id')
colnames(data2) <- c('spp','trait.2','id')

期望的输出:

  spp trait.1 trait.2 id
1   A     1.1      NA  1
2   B     1.1       2  2
3   C     1.1      NA  3
4   C      NA       2  9
5   D      NA       2  7

【问题讨论】:

    标签: r merge


    【解决方案1】:

    试试这个:

    library(dplyr)
    
    full_join(data1, data2, by = c("id", "spp"))
    

    输出:

      spp trait.1 id trait.2
    1   A     1.1  1      NA
    2   B     1.1  2       2
    3   C     1.1  3      NA
    4   C      NA  9       2
    5   D      NA  7       2
    

    另外,merge 也可以:

    merge(data1, data2, by = c("id", "spp"), all = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多