1

我想将两个数据框组合成 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() 但运气不好。合并仅通过添加列来合并数据框。我真的不知道该怎么做。

4

3 回答 3

5

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

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 你需要有相同的列名。

于 2013-05-17T18:41:52.250 回答
3

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

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
于 2013-05-17T18:56:58.540 回答
0

如果您想要每个 x 值的 Y 和 Z 值,那么您可以像这样使用完全外部合并: XYZ <- merge(x = XY, y = YZ, by = "x", all = TRUE)

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

XYZ <- rbind(XY, YZ)
于 2018-02-25T11:18:51.890 回答