合并两个数据帧中的行

时间:2018-06-11 12:45:12

标签: r dataframe merge

我想创建一个函数,其中两个数据帧的合并成对出现(即df1列1紧挨着df2列1,然后df1列2紧挨着df2列2(等))。下面是一个脚本,用于制作两个随机数据帧以实现再现性。

    df1 <- data.frame(replicate(10,rnorm(20)))
    df2 <- data.frame(replicate(10,rnorm(20)))

基本上,目标结果是让df1 $ X1在df2 $ X1旁边,然后df1 $ X2在df2 $ X2旁边,依此类推,存储在新数据框(例如df3)中。我知道可以在data.frame()命令中写出来但这需要太长时间。是否有实现这一目标的功能?

我知道这个问题很可能已经得到解答,但我不确定如何提出问题并因此无法找到任何方法。任何帮助将非常感激。非常感谢你!

1 个答案:

答案 0 :(得分:1)

一种可能性是使用Map

do.call(cbind, Map(cbind, df1, df2))

mapply

do.call(cbind, mapply(cbind, df1, df2, SIMPLIFY = F))

说明:内部cbinddf1df2成对地绑定列。外部cbind将成对列的list绑定到最终data.frame

使用一对带有固定种子的小样本data.frame(为了重现性),这是一个例子:

set.seed(2017);
df1 <- data.frame(replicate(2, rnorm(4)))
df2 <- data.frame(replicate(2, rnorm(4)))

do.call(cbind, Map(cbind, df1, df2))
#            [,1]       [,2]         [,3]       [,4]
#[1,]  1.43420148 -0.2653360 -0.069825227 -0.7467347
#[2,] -0.07729196  1.5632226  0.451905527  0.3066498
#[3,]  0.73913723  0.3427681 -1.958366456 -1.4304858
#[4,] -1.75860473  1.5724254 -0.001524259  1.1944265