概要
- 全部の列名を変える時は magrittr::set_colnames()がお勧め
- 部分的に変える時はdplyr::rename()がお勧め
操作のイメージ
今回紹介する列名を変える操作のイメージは下の図のような感じです。
magrittr::set_colnames()
データフレームの全ての列名を変える時は magrittr パッケージのset_colnames()関数がお勧めです。
ここではset_colnames()関数の使い方を紹介します。
使い方
基本的な使い方は下の通りです。
library(magrittr) set_colnames(データフレーム, 列名の文字列ベクトル)
基本的に設定する引数は以下の通りです。
- x :列名を変えたいデータフレーム
- value:列名としたい文字列のベクトル(列数と列名数は一致が不可欠)
注意点は変更したいデータフレームの列数と指定した列名のベクトルの数(長さ)が一致する必要がある点です。列数が4列あるのに指定した列名のベクトルがc("A", "B")で2つしかない場合は足りない分の列名は全て「NA」となってしまいます。
具体例
ここでは具体例として iris データの列名を変えたいと思います。
library(magrittr) new_colnames = c("Sep_Len", "Sep_Widt", "Pet_Len", "Pet_Widt", "Spc") set_colnames(x = iris, value = new_colnames) #> Sep_Len Sep_Widt Pet_Len Pet_Widt Spc #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa
結果を見てみるとirisの列名が new_colnames 変数として指定した文字列に置き換わっていることがわかります。このように set_colnames()関数ではすべての列名を変更することになります。
dplyr::rename()
全部ではなく、部分的に列名を変える時は dplyr パッケージの rename() 関数がお勧めです。
変更前の列名と変更後の列名のペアを指定することで変えたい列の列名だけを部分的に変更することができます。
使い方
基本的な使い方は以下の通りです。
library(dplyr) rename(.data = データフレーム, 新しい列名 = もとの列名)
基本的な引数は以下の通りです。
- .data:列名を編集したいデータフレーム
- . . . :新しい列名=もとの列名のペア(右辺に古い名前が無いとエラー)
注意点としては、新しい列名と古い列名を等号で表現する時に必ず右辺に古い名前が来る必要があることです。これが満たされていないとエラーが出てしまいます。
具体例
具体例として iris データの「Species」列の列名を大文字の「SPECIES」にする場合を考えてみます。この場合のコードは以下の通りです。
library(rename) rename(.data = iris, SPECIES = Species) #> Sepal.Length Sepal.Width Petal.Length Petal.Width SPECIES #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa
結果を見てみるときちんと「Species」列の列名が「SPECIES」となっています。