こんにちは,shun(@datasciencemore)です!
前回は{tidyr}の縦横変換についてやりましたね,覚えてますでしょうか??
今回は{tidyr}のもうひとつの重要な役割である列の分割と結合についてやっていきます.
今回のは簡単だと思うので気楽に聞いてくださいな笑
それではやっていきましょう!
0.列の分割と結合ってなに??
今回は多分簡単だと思います.
サクッと終わらせちゃいましょう笑
さっ,いつもどおりイメージを示しますね.
イメージを見れば簡単だと思います.
データフレームの列を分割したいときは,separateを使用すれば可能です.
反対に複数列を結合したいときは,uniteを使用すればOKです.
それでは,具体例を見ていきましょう.
今回は,イメージの左のデータフレームを作成して使用しましょう.
1 2 3 4 5 6 7 |
df_unite = tibble( No. = 1:5, date = c("2019-1", "2020-3", "2017-12", "2018-9", "2015-4") ) df_unite |
1 2 3 4 5 6 7 8 |
# A tibble: 5 x 2 No. date <int> <chr> 1 1 2019-1 2 2 2020-3 3 3 2017-12 4 4 2018-9 5 5 2015-4 |
1.列分割 separate
それでは,列分割をしてみましょう.
separateのcolに分割したい列を,intoに分割後の列名を,sepに区切り文字を指定してあげます.
1 2 3 4 5 6 7 8 9 |
df_separate = df_unite %>% separate( col = date, into = c("year", "month"), sep = "-" ) df_separate |
1 2 3 4 5 6 7 8 |
# A tibble: 5 x 3 No. year month <int> <chr> <chr> 1 1 2019 1 2 2 2020 3 3 3 2017 12 4 4 2018 9 5 5 2015 4 |
はい,できました!
2.列結合
今度は列結合です.
さっき作成したdf_separateにuniteを使用して,df_uniteに戻るか確認してみましょう.
df_uniteのcolに結合後の列名を,その次に結合したい列名を,sepに区切り文字を指定します.
1 2 3 4 5 6 |
df_separate %>% unite( col = date, year, month, sep = "-" ) |
1 2 3 4 5 6 7 8 |
# A tibble: 5 x 2 No. date <int> <chr> 1 1 2019-1 2 2 2020-3 3 3 2017-12 4 4 2018-9 5 5 2015-4 |
はい,df_uniteと同じことが確認できました!!
まとめ
今回は,列分割結合についてやりました.
列を分割したい ⇒ separate
列を結合したい ⇒ unite
を使用すればOKです.
今回は,データフレームの形が変換前後でそこまで変化しないので,イメージがわきやすかったのではないでしょうか?
結構よく使う変形なので,しっかりと復習しておいてくださいね.
それじゃ,お疲れさまでした!!