r - 当多个数据集中存在相同的列名时,应该使用哪个合并命令进行合并?
问题描述
三个数据集如下:
[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
请帮助我解决这个问题。
解决方案
我们可以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)
推荐阅读
- javascript - 如何清除 npm 错误并让我的端口运行?
- user-interface - Grafana 使用什么进行仪表板定制?
- javascript - 如何将承载授权标头传递给外部 api,在 loopback4 中使用 openapi 规范创建服务
- r - 如何在新环境中安装 renv.lock 文件
- c# - 在新的 Interop Excel 进程中打开工作簿时,线程被中止抛出异常
- mongodb - MongoDB $nin AND 等于某个值
- javascript - 使整个 div 充当链接,除了一个 div 还具有另一个链接
- nix - 如何在 nix 包管理器中修改特定派生选项
- r - R-如何绘制轨迹图?
- linux - 使用 wget 从网站下载最新/最新的 ZIP 文件