第5章 tidyverse(dplyr)で再現 ・ ノック 79 / 100 ・ [[000 - はじめに(使い方と目次)|目次]]<br>
← 前 [[078 - 複数の列に同じ処理をする]] ・ 次 → [[080 - データを縦長に変形する]]
> [!info] left_join() は共通の列をキーにして二つの表をつなぐ動詞です
> **`left_join()`**(レフトジョイン)は、二つのデータフレームを共通の列(**キー列**)をもとに横に結合する動詞です。「左側のデータを全部残しながら、右側のデータを付け加える」という意味です。キーに一致する行が右側にない場合は欠損値(`NA`)が入ります。
>
> Rベースでは `merge(x, y, by = "列名", all.x = TRUE)` と書いていました。`left_join()` は `by` 引数でキー列を指定するだけなので、「左側を基準に結合する」という意図が名前から伝わります。他にも両方を残す `full_join()`、共通部分だけ残す `inner_join()` などがあります。
## 問題
Species と和名の対応表を作り、`iris` に `left_join()` で和名列を追加してみましょう。先頭3行だけ確認してください。
> [!tip] ヒント
> まず `data.frame()` で対応表を作ります。次に `left_join(iris, 対応表, by = "Species")` の形でつなぎます。
> [!success]- 回答を見る
> ```r
> library(dplyr)
> wamei <- data.frame(
> Species = c("setosa", "versicolor", "virginica"),
> 和名 = c("ヒオウギアヤメ", "ブルーフラッグ", "バージニカアヤメ")
> )
> iris %>%
> left_join(wamei, by = "Species") %>%
> select(Sepal.Length, Species, 和名) %>%
> head(3)
> ```
> ```
> Sepal.Length Species 和名
> 1 5.1 setosa ヒオウギアヤメ
> 2 4.9 setosa ヒオウギアヤメ
> 3 4.7 setosa ヒオウギアヤメ
> ```
> Rベースでは `merge(iris, wamei, by = "Species", all.x = TRUE)` と書いていましたが、`left_join()` を使うと「左側(iris)を基準に結合する」という意図が名前から伝わります。