left join 一对多只取一条_R语言ETL工程:连接(join)

0382ba30097c7271cff06ec28ba12c60.png

作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

邮箱:huang.tian-yuan@qq.com

本章将会介绍如何在R中完成数据表的连接操作。首先要明确一个问题:为什么要进行连接?本质上来说,连接就是按照一定的对应规则,把两个表格合并为一个表格的操作。举个例子:比如我们一张表格中有乐队的歌手名字和他们所属的乐队,另一张表格有歌手的名字和他们擅长的乐器类型。因为两张表格都含有歌手的名字,而歌手的名字也是唯一的(在数据库理论框架中,这个属性被称为主键),即不存在一张表格会重复出现同一个歌手的名字。这个时候,我们就希望把两张表格合并起来,做一张包含歌手名字、所属乐队、擅长乐器的大表格。通过连接,我们能够把众多表格的数据合并起来,从而让孤立的数据能够联系在一起。

本章会采用较为简单的数据集进行实现,下面我们会参考dplyr的帮助文档举例,前期准备如下:

1library(tidyverse) 2band_members 3 4## # A tibble: 3 x 2 5## name band  6##    7## 1 Mick Stones  8## 2 John Beatles 9## 3 Paul Beatles1011band_instruments1213## # A tibble: 3 x 214## name plays 15##   16## 1 John guitar17## 2 Paul bass 18## 3 Keith guitar1920band_instruments22122## # A tibble: 3 x 223## artist plays 24##   25## 1 John guitar26## 2 Paul bass 27## 3 Keith guitar

观察表格,我们可以知道,band_members包含了歌手名称和乐队信息,band_instruments包含歌手名称和乐器信息,band_instruments2与band_instrument包含的信息一样,但是歌手名称的列名称由name变化为artist。

基本概念

连接分为很多种,包括内连接、全链接、左连接、右连接等。我们先介绍一些基础的逻辑,先看下面这张图:

e5ea52123227259b0803c19b90ab6dc8.png

下面我们逐个讲解这些连接的概念。 首先我们来讲内连接,又叫做自然连接。还是歌手、乐队、乐器的例子,比如我们的A表格中有歌手名称和乐队的信息,B表格中有歌手名称和擅长乐器的信息。另外,我们发现两张表格中,A表格包含的歌手信息和B表格不同,有的歌手只有A表格有,B表格就没有;有的歌手只有B表格有,但是A表格没有。但是我们还是希望把A表格和B表格连接起来,形成一个大表格

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值