将 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 #>
但当你需要匹配多个变量时,这种方法很难推广,而且需要仔细阅读才能弄清整体意图。
接下来的几节将详细解释变动连接是如何工作的。你将首先学习一种有用的连接可视化表示方法。然后我们会用它来解释四种变动连接函数:内连接和三种外连接。在处理真实数据时,键并不总是能唯一标识观测值,所以接下来我们会讨论当没有唯一匹配时会发生什么。最后,你将学习如何告诉 dplyr 哪些变量是给定连接的键。
理解连接
为了帮助你学习连接是如何工作的,我将使用一种可视化表示方法:

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