首页 > 解决方案 > 当多个数据集中存在相同的列名时,应该使用哪个合并命令进行合并?

问题描述

三个数据集如下:

[Name]  [10th]  [Mark]
Ram     ICSE    562
Sam     CBSE    589
Deep    CBSE    523

[Name]  [12th]  [Mark]
Ram     PCM     589
Sam     CBZ     689
Deep    PCM     563

[Name]  [B.Tech]    [Mark]
Ram         Mech    589
Sam        Civil    689
Deep          IT    563

我想要输出如下格式:

[Name]  [10th]  [Mark]  [12th]  [Mark]  [B.Tech]    [Mark]
Ram     ICSE    562      PCM    589        Mech     589
Sam     CBSE    589      CBZ    689        Civil    689
Deep    CBSE    523      PCM    563           IT    563

请帮助我解决这个问题。

标签: r

解决方案


我们可以purrr::reduce使用dplyr::full_join

library(tidyverse);
reduce(list(df1, df2, df3), function(x, y) full_join(x, y, by = "Name"))
#  Name X10th Mark.x X12th Mark.y B.Tech Mark
#1  Ram  ICSE    562   PCM    589   Mech  589
#2  Sam  CBSE    589   CBZ    689  Civil  689
#3 Deep  CBSE    523   PCM    563     IT  563 

或者在基础 R 中:

Reduce(function(x, y) merge(x, y, by = "Name"), list(df1, df2, df3))
#  Name X10th Mark.x X12th Mark.y B.Tech Mark
#1 Deep  CBSE    523   PCM    563     IT  563
#2  Ram  ICSE    562   PCM    589   Mech  589
#3  Sam  CBSE    589   CBZ    689  Civil  689

样本数据

df1 <- read.table(text =
    "Name   10th     Mark
Ram        ICSE    562
Sam        CBSE    589
Deep    CBSE    523", header = T);

df2 <- read.table(text =
    "Name    12th    Mark
Ram        PCM        589
Sam        CBZ        689
Deep    PCM        563", header = T);

df3 <- read.table(text =
    "Name    B.Tech    Mark
Ram            Mech    589
Sam           Civil    689
Deep          IT    563", header  = T)

推荐阅读