【问题标题】:Combining two data frames into two columns in R在R中将两个数据框组合成两列
【发布时间】:2018-02-25 19:18:51
【问题描述】:

我想将两个数据框组合成 R 中的两列:

以下是两个数据框的示例:

数据框 XY:

 X     Y
 x1    y1
 x2    y2
 x3    y3
 x4    y4
 x5    y5

数据框 XZ:

 X     Z
 x1    z1
 x2    z2
 x3    z3
 x4    z4
 x5    z5

我希望结果是一个如下所示的数据框:

 X     YZ
 x1    y1
 x2    y2
 x3    y3
 x4    y4
 x5    y5
 x1    z1
 x2    z2
 x3    z3
 x4    z4
 x5    z5

这是上面示例数据帧的 R 代码:

x <- c("x1", "x2", "x3", "x4", "x5")
y <- c("y1", "y2", "y3", "y4", "y5")
z <- c("z1", "z2", "z3", "z4", "z5")

XY <- data.frame(x,y)
XZ <- data.frame(x,z)

我尝试过 rbind() 但运气不佳。合并仅通过添加列来合并数据框。我真的不知道该怎么做。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    也许您可以尝试如下重命名列名:

    names(XY)<- c("x","yz")
    names(XZ)<- c("x","yz")
    new <- rbind(XY,XZ)
    > new
        x yz
    1  x1 y1
    2  x2 y2
    3  x3 y3
    4  x4 y4
    5  x5 y5
    6  x1 z1
    7  x2 z2
    8  x3 z3
    9  x4 z4
    10 x5 z5
    

    希望对你有帮助。

    我相信为了使用 rbind,你需要有相同的列名。

    【讨论】:

      【解决方案2】:

      这里值得一提的是data.table中的rbind函数有你想要的功能:

      library(data.table)
      
      xy = data.table(XY)
      xz = data.table(XZ)
      rbind(xy, xz, use.names = F)
      
      # or convert them to `data.table` on the fly
      .rbind.data.table(XY, XZ, use.names = F)
      #     x  y
      # 1: x1 y1
      # 2: x2 y2
      # 3: x3 y3
      # 4: x4 y4
      # 5: x5 y5
      # 6: x1 z1
      # 7: x2 z2
      # 8: x3 z3
      # 9: x4 z4
      #10: x5 z5
      

      【讨论】:

        【解决方案3】:

        如果您想要每个 x 值的 Y 和 Z 值,那么您可以像这样使用完全外部合并: XYZ

        否则,您可以简单地将两个数据框按行绑定为:

        XYZ <- rbind(XY, YZ)
        

        【讨论】:

          猜你喜欢
          • 2015-08-26
          • 1970-01-01
          • 2015-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 1970-01-01
          • 2019-03-25
          相关资源
          最近更新 更多