【R言語】uniteを使った列の結合

unite関数は、データフレームの列を結合するための関数で、複数の列を結合して新しい列を作成することができます。

unite関数は、以下のような構文を持ちます。

unite(data, col, ..., sep = "_", remove = TRUE)
  • data : データフレーム
  • col : 新しい列名
  • ... : 結合する列名
  • sep : 区切り文字
    • デフォルトでは「_」
  • remove : 結合した列を削除するかどうか
    • デフォルトでは削除する

パイプ演算子を用いたやり方では下記のように使います。

df %>%
    unite(col, ..., sep = "_", remove = TRUE)

第一引数がdata(data.frame)ではなくcol(新しい列名)になっています。

こちらのデータのうち和暦・給付年度・被災学校種の3列を用いて使用例を書いていきたいと思います。

先頭5行は下記のとおり

和暦 給付年度 被災学校種
平成 17
平成 17
平成 17
平成 17
平成 17

環境

ライブラリの読み込み

library(tidyverse)
library(readxl)

データの読み込み

df <- read_excel("shougai_20230201.xlsx") %>% 
      select(和暦, 給付年度, 被災学校種)

このデータフレームに対して、和暦列と 給付年度列を結合して新しい列和暦_ 給付年度を作成する場合は、以下のようにします。

df %>% 
    unite(和暦_給付年度, 和暦, 給付年度) %>%
    head(5)
和暦_給付年度 被災学校種
平成_17
平成_17
平成_17
平成_17
平成_17

このコードでは、dfデータフレームの和暦列と 給付年度列を結合して新しい列和暦_ 給付年度を作成しています。結合に用いた2つの列は削除され新しい列ができています。

区切り文字を指定する

区切り文字はデフォルトではアンダースコア(_)が用いられます。指定したい場合はsepで指定します。
下記のコードでは区切り文字を半角( )を指定しています。

df %>% 
    unite(和暦_給付年度, 和暦, 給付年度, sep = " ") %>%
    head(5)
和暦_給付年度 被災学校種
平成 17
平成 17
平成 17
平成 17
平成 17

区切り文字をなくしたい場合はsep=""とします。

df %>% 
    unite(和暦_給付年度, 和暦, 給付年度, sep="") %>%
    head(5)
和暦_給付年度 被災学校種
平成17
平成17
平成17
平成17
平成17

結合に用いた列を残す

デフォルトでは結合に用いた列は残りません。結合に用いた2つの列を残したい場合は引数のremoveでFALSEを指定します。

df %>% 
    unite(和暦_給付年度, 和暦, 給付年度, remove = FALSE) %>%
    head(5)
和暦_給付年度 和暦 給付年度 被災学校種
平成_17 平成 17
平成_17 平成 17
平成_17 平成 17
平成_17 平成 17
平成_17 平成 17

複数列を結合する

複数列を結合する場合は、結合したい列をカンマで区切って追加していきます。 下記のコードでは、和暦・給付年度・ 被災学校種の3列を用いて和暦給付年度被災学校種という列を作っています。

df %>% 
    unite(和暦_給付年度_被災学校種, 和暦, 給付年度, 被災学校種) %>%
    head(5)
和暦_給付年度_被災学校種
平成_17_小
平成_17_小
平成_17_小
平成_17_小
平成_17_小