当具有相似值的列具有相似的行值时,合并两个不同的数据帧

时间:2017-05-11 12:33:24

标签: r merge dplyr domc

简单的问题 我们有两个不同的数据帧,其设置与DF_1&的输出类似。 DF_2

DF_1 = as.data.frame(matrix(c(1,2,3,4,20,55,12,44),nrow=4,ncol=2))
DF_2 = as.data.frame(matrix(c(1,2,3,4,33,32,21,44,66,71),nrow=2,ncol=5))

如何合并DF_1和DF_2来创建一个组合数据帧调用它的combined_DF看起来像这个

的输出
combined_DF = as.data.frame(matrix(c(1,2,1,2,20,55,12,44,3,4,3,4,33,32,33,32,21,44,21,44,66,71,66,71),nrow=4,ncol=6))

什么是快速方式,它创建与combined_DF相同的输出?

更难的问题 实际上,需要合并的两个数据帧要大得多,实际上

DF1是156798 obs。 9个变量

DF2是6441 obs。 92个变量

现在如何合并DF_1和DF_2来创建一个组合数据帧调用它的combined_DF,它有156798个obs。 99个变量? (与简单问题的原理相同,但这次更大的数据帧)可以使用doMC :: registerDoMC来加速这个过程。

非常感谢答案:)

2 个答案:

答案 0 :(得分:0)

通过基地R,

 cbind(V6 = DF_1$V2, DF_2[rep(rownames(DF_2), nrow(DF_1) - nrow(DF_2)),])

#    V6 V1 V2 V3 V4 V5
#1   20  1  3 33 21 66
#2   55  2  4 32 44 71
#1.1 12  1  3 33 21 66
#2.1 44  2  4 32 44 71

答案 1 :(得分:0)

不是100%根据你的要求。您要么只是将表并排放置,其中一个是列绑定,另一个是另一个是行绑定,或者您正在尝试连接表是一个连接..您能否澄清一下多一点?  我不理解你可重复的例子。

通过dplyr

library(dplyr)
combined_DF <- bind_cols(DF_1, DF_2)

combined_DF <- bind_rows(DF_1, DF_2)

combined_DF <- left_join(DF_1, DF_2)