R海洋拾遗_关系数据
概述
关系数据,俗称多个表通过统一的id进行合并,这个id可以是单一的key,也可以是多个key,总之就是合并的关键词吧。其实这个问题在之前的rbase中已经有过涉及,在spss中也可以通过模块化的操作进行合并table。这里重新提起来,主要是能够使代码规范化到tidyverse的生态中
主要函数
- inner join 内部连接,也就是两个table之间共同拥有的key才回被保留
- left join 左连接:按照左边的key保留样本
- right join 右连接:按照右边key保留样本
- full join 全连接:保留左右样本
例子
代码语言:javascript复制x <- tribble(
~key, ~val_x,
1, "x1",
2, "x2",
3, "x3",
4, "x4"
)
y <- tribble(
~key, ~val_y,
1, "y1",
2, "y2",
3, "y3"
)
left_join(x, y, by = "key")
#> 1 1 x1 y1
#> 2 2 x2 y2
#> 3 2 x3 y3
#> 4 2 x4 NA
why?
dplyr | merge |
---|---|
inner_join(x, y) | merge(x, y) |
left_join(x, y) | merge(x, y, all.x = TRUE) |
right_join(x, y) | merge(x, y, all.y = TRUE), |
full_join(x, y) | merge(x, y, all.x = TRUE, all.y = TRUE) |
从上述看,似乎是将rbase的merge函数进行了拆解分为了三个函数,从函数设计的简洁原则来看,似乎有点多余,好在函数比较好记,重新转换思路并不是一件困难的事情,为了生态而生态吧(为了管道)。
结束语
love & peace