←
PDF 205 / 520 Understanding Joins
→
English · PDF 205
Original PDF page 205
中文 · PDF 205

将 airlines 与 flights2 连接的结果是新增了一个变量:name。这就是为什么我把这种类型的连接称为变动连接(mutating join)。在这个例子中,你也可以使用 mutate() 和 R 的基础子集操作达到同样的效果:

flights2 %>% select(-origin, -dest) %>% mutate(name = airlines$name[match(carrier, airlines$carrier)]) #> # A tibble: 336,776 × 7 #> year month day hour tailnum carrier #> #> 1 2013 1 1 5 N14228 UA #> 2 2013 1 1 5 N24211 UA #> 3 2013 1 1 5 N619AA AA #> 4 2013 1 1 5 N804JB B6 #> 5 2013 1 1 6 N668DN DL #> 6 2013 1 1 5 N39463 UA #> # ... 还有 3.368e+05 行,以及 1 个更多变量: #> # name

但当你需要匹配多个变量时,这种方法很难推广,而且需要仔细阅读才能弄清整体意图。

接下来的几节将详细解释变动连接是如何工作的。你将首先学习一种有用的连接可视化表示方法。然后我们会用它来解释四种变动连接函数:内连接和三种外连接。在处理真实数据时,键并不总是能唯一标识观测值,所以接下来我们会讨论当没有唯一匹配时会发生什么。最后,你将学习如何告诉 dplyr 哪些变量是给定连接的键。

理解连接

为了帮助你学习连接是如何工作的,我将使用一种可视化表示方法:

x <- tribble( ~key, ~val_x, 1, "x1", 2, "x2", 3, "x3" )