【问题标题】:Merge data frame based on column names in r根据r中的列名合并数据框
【发布时间】:2017-02-24 00:29:22
【问题描述】:

我有 4 个数据框,它们的列数和列名都相同。
列的顺序不同。
我想将所有 4 个数据框组合在一起,并将它们与列名匹配。

【问题讨论】:

  • 签出merge
  • 哪个数据框有想要的顺序?还是没关系?您尝试过的一些可重复的示例会有所帮助。顺便说一句,“合并”不是正确的功能,因为没有关键列。
  • 看看rbind
  • 在这里,当您需要答案时,您将了解如何制作出色的 R 可重现示例。 stackoverflow.com/questions/5963269/…

标签: r


【解决方案1】:

Working Azure ML - 这是我发现自动化此合并的最佳选择。

df <- maml.mapInputPort(1)
df2 <- maml.mapInputPort(2) 

if (length(df2.toAdd <- setdiff (names(df), names(df2))))
df2[, c(df2.toAdd) := NA]

if (length(df.toAdd <- setdiff (names(df2), names(df))))
df[, c(df.toAdd) := NA]

df3 <- rbind(df, df2, use.names=TRUE)


maml.mapOutputPort("df3");

【讨论】:

    【解决方案2】:

    假设你的 4 个数据框被命名为 df1df2df3df4,既然列数和列名相同,那么为什么不这样:

    cl <- sort(colnames(df1))
    mrg <- rbind(df1[,cl], df2[,cl], df3[,cl], df4[,cl])
    

    如果您想让它们以特定的列顺序排列,例如df2 中的列顺序,那么您可以这样做:

    mrg <- mrg[,colnames(df2)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多