将两个数据帧组合成R中的两列

时间:2013-05-17 18:37:09

标签: r dataframe

我想将两个数据框组合成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()但运气不好。合并仅通过添加列来合并数据帧。我真的不确定如何解决这个问题。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

值得一提的是,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

答案 2 :(得分:0)

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

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

XYZ <- rbind(XY, YZ)