R海洋拾遗_关系数据

2021-06-29 14:55:26 浏览数 (2)

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

0 人点赞