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

Merge two different dataframes when column with similar value has similar row value

简单的问题 我们有两个不同的数据帧,其设置与 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 来加快这一过程。

非常感谢回答:)

通过基础 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

并非 100% 符合您的要求。要么你想并排放置 table,其中是一个列绑定,或者一个在另一个下面,这是一个行绑定,或者你想加入 tables 这是一个加入..你能再澄清一点吗? 我不明白您的可重现示例。

通过 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)