【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_小 |