R言語でデータフレームの列名を変更する方法について解説します。このような方法はいくつかあり、R言語に標準で搭載されている機能を使用した方法もありますが、ここではtidyverseパッケージに含まれているdplyrパッケージのrename()またはrename_with()を使用した方法についてお伝えします。rename()またはrename_with()を使用する利点は、パイプ演算子と親和性が高くR言語に標準で搭載されている機能を使用する方法よりも可読性が高いコードが書けることが挙げられます。

rename()の概要

rename()は、列名を変更するための関数です。rename()は、個々の変数の名前をnew_name = old_name構文を使用して変更します。

rename()の使い方

dplyr::rename()の使い方は次になります。


rename(.data, ...)

mutate()の引数の意味

.data

データフレームまたはデータフレーム拡張(例:tibble)、遅延データフレーム(例:dbplyrまたはdtplyrから)を指定します。

tidy-selectを指定できます。new_name = old_nameを使用して、選択した変数の名前を変更します。

rename_with()の概要

rename_with()は、列名を変更するための関数です。rename_with()は、関数を使用して列の名前を変更します。

rename_with()の使い方

dplyr::rename_with()の使い方は次になります。


rename_with(.data, .fn, .cols = everything(), ...)

rename_with()の引数の意味

.data

データフレームまたはデータフレーム拡張(例:tibble)、遅延データフレーム(例:dbplyrまたはdtplyrから)を指定します。

.fn

選択した.colsを変換するために使用される関数を指定します。
入力と同じ長さの文字ベクトルを返す必要があります。

.cols = everything()

tidy-selectを指定できます。名前を変更する列を指定します。デフォルトはすべての列です。

.fn に渡される追加の引数を指定します。

準備

あらかじめ、tidyverseパッケージを読み込んでおきます。


library(tidyverse)

解説のために、次のirisデータセットを使用します。


iris |>
  head()

  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
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

列名を変更

irisデータセットで、列名Sepal.Lengthを列名Aに変更するには次のようにします。


iris |>
  rename(A = Sepal.Length) |>
  head()

    A 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
4 4.6         3.1          1.5         0.2  setosa
5 5.0         3.6          1.4         0.2  setosa
6 5.4         3.9          1.7         0.4  setosa

すべての列名を大文字に変更

irisデータセットで、すべての列名を大文字に変更するには次のようにします。


iris |>
  rename_with(~ toupper(.)) |>
  head()

  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
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

列名に接頭辞(プリフィックス)を付加

irisデータセットで、列名Sepal.Lengthと列名Sepal.Widthに接頭辞「A_」を付加するには次のようにします。


iris |>
  rename_with(~ paste("A", ., sep = "_"), starts_with("Sepal")) |>
  head()

  A_Sepal.Length A_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
4            4.6           3.1          1.5         0.2  setosa
5            5.0           3.6          1.4         0.2  setosa
6            5.4           3.9          1.7         0.4  setosa

列名に連番の接尾辞(サフィックス)を付加

irisデータセットで、列名Sepal.Lengthと列名Sepal.Widthに連番の接尾辞「_**」を付加するには次のようにします。


iris |>
  rename_with(~ sprintf("%s_%02d", ., seq(length(.))), starts_with("Sepal")) |>
  head()

  Sepal.Length_01 Sepal.Width_02 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
4             4.6            3.1          1.5         0.2  setosa
5             5.0            3.6          1.4         0.2  setosa
6             5.4            3.9          1.7         0.4  setosa
R入門 データフレームの列名を変更する方法