はじめてのdplyr(4):キー変数で2つのデータを横に連結する
タイトルはdplyr
であるが,RStudioを起動したら迷わず,関連パッケージを一気に読み込んでくれるtidyverse
パッケージをロードすればよい。
library(tidyverse)
2つのデータの作成
過去の記事,
で紹介してきたデータセットは,Aqoursメンバーの名前という共通した変数name
がある。今回はname
をキー変数として,2つのデータを横に連結してみる。まずはデータを以下に再掲。
dat <- data_frame( name=c("高海千歌","桜内梨子","松浦果南","黒澤ダイヤ","渡辺曜","津島善子","国木田花丸","小原鞠莉","黒澤ルビィ"), grade=c(2,2,3,3,2,1,1,3,1), #学年 height=c(157,160,162,162,157,156,152,163,154), #身長 B=c(82,80,83,80,82,79,83,87,76), #バスト W=c(59,58,58,57,57,58,57,60,56), #ウエスト H=c(83,82,84,80,81,80,83,84,79) #ヒップ ) dat
# A tibble: 9 × 6 name grade height B W H <chr> <dbl> <dbl> <dbl> <dbl> <dbl> 1 高海千歌 2 157 82 59 83 2 桜内梨子 2 160 80 58 82 3 松浦果南 3 162 83 58 84 4 黒澤ダイヤ 3 162 80 57 80 5 渡辺曜 2 157 82 57 81 6 津島善子 1 156 79 58 80 7 国木田花丸 1 152 83 57 83 8 小原鞠莉 3 163 87 60 84 9 黒澤ルビィ 1 154 76 56 79
次はメンバーの名前とトリオユニット名のデータを作る。片方のデータにしかない行も追加して動きを確認してみたいため,2つ目のデータではAqoursメンバーに加えうちっちーも加えてみる。
dat_tu <- data_frame( name=c("高海千歌","桜内梨子","松浦果南","黒澤ダイヤ","渡辺曜","津島善子", "国木田花丸","小原鞠莉","黒澤ルビィ","うちっちー"), group=c("CYaRon!","Guilty Kiss","AZALEA","AZALEA","CYaRon!","Guilty Kiss", "AZALEA","Guilty Kiss","CYaRon!","solo") ) dat_tu
# A tibble: 10 × 2 name group <chr> <chr> 1 高海千歌 CYaRon! 2 桜内梨子 Guilty Kiss 3 松浦果南 AZALEA 4 黒澤ダイヤ AZALEA 5 渡辺曜 CYaRon! 6 津島善子 Guilty Kiss 7 国木田花丸 AZALEA 8 小原鞠莉 Guilty Kiss 9 黒澤ルビィ CYaRon! 10 うちっちー solo
2つのデータの連結
それでは,名前を示している変数name
をキーとして,datデータにdat_tuの情報を横に連結してみる。datにない行もすべて追加するために,full_join()
関数を使う。
dat_all <- full_join(dat,dat_tu,by="name") dat_all
# A tibble: 10 × 7 name grade height B W H group <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> 1 高海千歌 2 157 82 59 83 CYaRon! 2 桜内梨子 2 160 80 58 82 Guilty Kiss 3 松浦果南 3 162 83 58 84 AZALEA 4 黒澤ダイヤ 3 162 80 57 80 AZALEA 5 渡辺曜 2 157 82 57 81 CYaRon! 6 津島善子 1 156 79 58 80 Guilty Kiss 7 国木田花丸 1 152 83 57 83 AZALEA 8 小原鞠莉 3 163 87 60 84 Guilty Kiss 9 黒澤ルビィ 1 154 76 56 79 CYaRon! 10 うちっちー NA NA NA NA NA solo
一方,うちっちーはデータに謎が多すぎるから今回は連結しません,という場合はleft_join()
関数を使って,datの方にある名前のみと連結させるとよい。
dat_aqours <- left_join(dat,dat_tu,by="name") dat_aqours
# A tibble: 9 × 7 name grade height B W H group <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> 1 高海千歌 2 157 82 59 83 CYaRon! 2 桜内梨子 2 160 80 58 82 Guilty Kiss 3 松浦果南 3 162 83 58 84 AZALEA 4 黒澤ダイヤ 3 162 80 57 80 AZALEA 5 渡辺曜 2 157 82 57 81 CYaRon! 6 津島善子 1 156 79 58 80 Guilty Kiss 7 国木田花丸 1 152 83 57 83 AZALEA 8 小原鞠莉 3 163 87 60 84 Guilty Kiss 9 黒澤ルビィ 1 154 76 56 79 CYaRon!