R语言ETL工程:集合运算(intersect/union/setdiff)

本文介绍了R语言中的集合运算,包括交集(intersect)、并集(union)、补集(setdiff)和判断是否相等(setequal),通过实例展示了如何在数据处理中应用这些概念,并提供了相关SQL代码的对照。
摘要由CSDN通过智能技术生成

640?wx_fmt=png

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

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

前文推送:

R语言ETL系列:汇总(summarise)

R语言ETL工程:分组(group_by)

R语言ETL工程:连接(join)


集合运算与连接其实有相似之处,但是连接是针对特定列(主键)来对表格进行连接,而集合运算则直接对记录(entry)进行运算。简单来说,就是以行为单位进行运算。假设表格A与表格B有相同的列名称,它们其实数据的来源是相同的,但是记录的东西有重复的部分,又有不一样的地方。如果我们想要知道哪些部分重复了,就需要求两个数据的交集。简单来讲,本章就是要讲数据记录的“交、并、补”运算。具体的运算逻辑如下图所示:


640?wx_fmt=jpeg

集合运算基本逻辑

内容比较简单,我们直接上例子。本章用到的数据集主要是mtcars,我们把它转化为tibble然后进行演示。环境准备如下:

 1library(tidyverse)
2mtcars %>% 
3rownames_to_column(var = "type") %>% #把行名称转为其中一列
4as_tibble() -> mtcars1 #转化为tibble格式
5
6mtcars1
7
8#
# # A tibble: 32 x 12
9## type mpg cyl disp hp drat wt qsec vs am gear carb
10## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
11## 1 Mazda~ 21 6 160 110 3.9 2.62 16.5 0 1 4 4
12## 2 Mazda~ 21 6 160 110 3.9 2.88 17.0 0 1 4 4
13## 3 Datsu~ 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
14## 4 Horne~ 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
15## 5 Horne~ 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
16## 6 Valia~ 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
17## 7 Duste~ 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
18## 8 Merc ~ 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
19## 9 Merc ~ 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
20## 10 Merc ~ 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
21## # ... with 22 more rows


这样还不能够满足我们距离的需要,现在我们对这个数据集取两个子集,一个是从第1到第6列,第二个是从第3到第8列,分别存在变量a和变量b中。


 1mtcars1 %>%
2slice(1:6) -a
3
4mtcars1 %>%
5slice(3:8) -b
6
7a
8
9## # A tibble: 6 x 12
10## type mpg cyl disp hp drat wt qsec vs am gear carb
11## <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值