第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)を基準に結合する」という意図が名前から伝わります。