笔记说明
dplyr包是一个用于数据清理的高效r包,也是tidyverse
的核心包之一。
之前的笔记:
用dplyr包进行数据清理-数据集的横向合并
介绍了用于两个数据集横向合并的各种*_join()
函数,
本次笔记介绍用于两个数据集纵向合并的各种Set operations
推荐阅读:
https://dplyr.tidyverse.org/articles/two-table.html
https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/setops
set operations 介绍
使用set operations对数据集进行纵向合并时,被合并的数据集的变量一般是相同的。
常用的set operations包括:
intersect(x, y): return only observations in both
x
andy
union(x, y): return unique observations inx
andy
union_all(x, y): return all observations inx
andy
setdiff(x, y): return observations inx
, but not iny
setequal(x,y):test whether two data sets contain the exact same rows (in any order).
注意:intersect()
, union()
, setdiff()
会删掉重复的观测(行)。
下面对各set operations进行演示。
准备工作
加载dplyr包并构造两个数据集x,y
library(dplyr)
x <- tribble(
~id, ~value,
1, 'a',
2, 'b',
2, 'b',
3, 'c'
)
y <- tribble(
~id, ~value,
2, 'b',
3, 'c',
4, 'd'
)
intersect()
x %>% intersect(y)
## # A tibble: 2 x 2
## id value
## <dbl> <chr>
## 1 2 b
## 2 3 c
union()
x %>% union(y)
## # A tibble: 4 x 2
## id value
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 3 c
## 4 4 d
union_all()
x %>% union_all(y)
## # A tibble: 7 x 2
## id value
## <dbl> <chr>
## 1 1 a
## 2 2 b
## 3 2 b
## 4 3 c
## 5 2 b
## 6 3 c
## 7 4 d
setdiff()
x %>% setdiff(y)
## # A tibble: 1 x 2
## id value
## <dbl> <chr>
## 1 1 a
setequal()
x %>% setequal(y)
[1] FALSE
网友评论