【问题标题】:Merge two different dataframes when column with similar value has similar row value当具有相似值的列具有相似的行值时合并两个不同的数据框
【发布时间】:2017-05-11 12:33:23
【问题描述】:

简单的问题 我们有两个不同的数据帧,其设置与 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 以创建组合数据框,将其称为 combine_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))

什么是一种快速的方法,可以创建与 combine_DF 相同的输出?

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

DF1 是 156798 obs。共 9 个变量

DF2 是 6441 obs。 92 个变量

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

非常感谢您的回答:)

【问题讨论】:

  • 问题本来只有简单的问题。我真正需要解决的问题是增加的更难的问题。希望有人能解决这个问题:)

标签: r merge dplyr domc


【解决方案1】:

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

【讨论】:

  • 给定问题的简单解决方案。谢谢 Sotos - 非常感谢您的回答 :)
【解决方案2】:

不是 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)

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2018-12-19
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多