こんにちは,shun(@datasciencemore)です!
前回は,キー結合についてやりました.
実は,キー結合以外にも複数のデータフレームを結合する方法があります.
それが縦横結合です.
どんな結合方法なのか,見ていきましょう.
0.縦横結合ってなに??
縦横結合は,前回やったキー結合とは違った方法でデータフレームを結合することだよ.
縦に結合する場合と横に結合する場合の2種類があるよ.
今回は簡単だと思います笑
要は,データフレーム同士をガッチャンコするわけですね.
縦に結合するには,bind_rowsを,横に結合するには,bind_colsを使用します.
今回の例は,従業員の名簿データとして,df_name_1,df_name_2を,
従業員のグループデータとして,df_groupを使用します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 従業員の名簿データ1 df_name_1 = tibble( key = 1:2, name = c("asuka", "rina") ) # 従業員の名簿データ2 df_name_2 = tibble( key = 1:3, name = c("hinako", "yui", "kyouko") ) # 従業員のグループデータ df_group = tibble( group = c("nogi", "sakura", "nogi", "sakura", "hinata") ) |
1 2 3 4 5 6 |
> df_name_1 # A tibble: 2 x 2 key name <int> <chr> 1 1 asuka 2 2 rina |
1 2 3 4 5 6 7 |
> df_name_2 # A tibble: 3 x 2 key name <int> <chr> 1 1 hinako 2 2 yui 3 3 kyouko |
1 2 3 4 5 6 7 8 9 |
> df_group # A tibble: 5 x 1 group <chr> 1 nogi 2 sakura 3 nogi 4 sakura 5 hinata |
bind_rowsとbind_colsのイメージはこんな感じ.
処理の内容は以下のとおりです.
- df_name_1とdf_name_2をbind_rowによって縦結合し,df_nameを出力する.
- 上の1.で出力したdf_nameとdf_groupをbind_colによって横結合し,df_name_groupを出力する.
それぞれ,見ていきましょう.
1.bind_rows
bind_rowsを使用することにより,指定したデータフレームを縦にガッチャンコできます.
さっそくRのコードを見てみましょう.
1 2 3 |
# df_name_1とdf_name_2をくっつける df_name = bind_rows(df_name_1, df_name_2) |
1 2 3 4 5 6 7 8 9 |
> df_name # A tibble: 5 x 2 key name <int> <chr> 1 1 asuka 2 2 rina 3 1 hinako 4 2 yui 5 3 kyouko |
はい,簡単ですね笑
2.bind_cols
続きましてbind_colsです.
bind_rowsを使用することにより,指定したデータフレームを横にガッチャンコできます.
Rのコードはこんな感じ.
1 2 3 |
# df_nameとdf_groupをくっつける df_name_group = bind_cols(df_name, df_group) |
1 2 3 4 5 6 7 8 9 |
> df_name_group # A tibble: 5 x 3 key name group <int> <chr> <chr> 1 1 asuka nogi 2 2 rina sakura 3 1 hinako nogi 4 2 yui sakura 5 3 kyouko hinata |
はい,こちらも簡単でした.
ちなみにbind_colsはほとんど使いませんね笑
異なるモデルで出力した目的変数をくっつけるときにたまに使う程度ですかねー...
↑については,今は何言ってるかわからなくて結構です笑
実はbind_rowsもbind_colsも指定するデータフレームの個数は2以上でOKです.
1 2 |
# 複数のデータフレームを結合 bind_rows(df1, df2, df3, df4, df5, df6) |
これは,実務で意外と使いますね.
例えば1年の売り上げデータが欲しいけど,出力されるデータが1か月単位であるときなどにbind_colsを使って,1か月単位のデータを12個指定してあげれば1年の売り上げデータになります.
まとめ
今回は縦横結合をやりました.
- bind_rows:指定したデータフレームを縦に結合
- bind_cols:指定したデータフレームを横に結合
です.
また,bind_rowsもbind_colsも2つ以上のデータフレームを使用できます.
今回のはそんなに難しくないですよね,ただ縦か横にデータフレームをガッチャンコするだけです.
join系とも合わせて復習しておいてくださいね.
それじゃ,お疲れさまでした!!