【问题标题】:Combine multiple dataframe of different columns [duplicate]组合不同列的多个数据框[重复]
【发布时间】:2020-12-24 11:38:20
【问题描述】:

我们可以将多个数据框的行与不同的列组合起来吗?下面的例子

> asd1 <- data.frame(a = c("a","b"), b = c("fd", "fg"))
> asd1
  a  b
1 a fd
2 b fg

> asd2 <- data.frame(a = c("a","b"), e = c("fd", "fg"), c = c("gfd","asd"))
> asd2
  a  e   c
1 a fd gfd
2 b fg asd

Newdf <- rbind(asd1, asd2)
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match

由于不同的列,现在有一个错误。

预期输出

newdf 
data    a    b    e    c  
asd1    a   fd    NA   NA
asd1    b   fg    NA   NA
asd2    a   NA    fd   gfd
asd2    b   NA    fg   asd

上面的输出可能吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    我建议你 bind_rows() 来自 dplyr:

    library(dplyr)
    #Data 1
    asd1 <- data.frame(a = c("a","b"), b = c("fd", "fg"))
    #Data 2
    asd2 <- data.frame(a = c("a","b"), e = c("fd", "fg"), c = c("gfd","asd"))
    #Bind
    df <- bind_rows(asd1,asd2)
    

    输出:

      a    b    e    c
    1 a   fd <NA> <NA>
    2 b   fg <NA> <NA>
    3 a <NA>   fd  gfd
    4 b <NA>   fg  asd
    

    【讨论】:

      【解决方案2】:
      library(dplyr)
      
      bind_rows(asd1, asd2, .id = "data")
      
      
      #    data a    b    e    c
      # 1     1 a   fd <NA> <NA>
      # 2     1 b   fg <NA> <NA>
      # 3     2 a <NA>   fd  gfd
      # 4     2 b <NA>   fg  asd
      

      【讨论】:

        猜你喜欢
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        相关资源
        最近更新 更多