Rで変数名を一括で変更するやり方

R/Rstudio

Rで分析しているとき、変数名の頭に一括で同じ文字を入れたい時があると思います。
例えば、介入調査などで同じ質問内容を複数回とるときには、質問項目名の前に’pre_’とか’post_’とか、’time1_’、’time_2’とかをつけると思います。
そんな場合に、R上でうまく整理できないかな、と思って試行錯誤した結果、いい感じにまとめられるようになったので紹介します。

Rで変数名を一括で変更するやり方

変数名を一括で変更する流れは以下の3ステップです。

  • データセットの列名をリストに格納する
  • くっつけたい文字列と変数名リストを結合する
  • 結合した変数名リストに列名を更新する

例によって、irisのデータを使いながら、以下で順を追って説明します。

データセットの列名をリストに格納する

まずは変更したいデータセットの列名のリストを作成します。
列名のリストはnames()を使えば作ることができます。
irisには、

  • Sepal.Length 
  • Sepal.Width
  • Petal.Length
  • Petal.Width  
  • Species

という変数名があります。

まずは、namelistという変数にirisの列名を格納します。
以下のようにnames()で出力すれば格納できます。

> namelist<-names(iris)
> namelist
[1] “Sepal.Length” “Sepal.Width”  “Petal.Length” “Petal.Width” 
[5] “Species”  

くっつけたい文字列と変数名リストを結合する

続いて、くっつけたい文字列と変数名リストを結合します。
文字列の結合にはpaste()を使います。
例えば、irisのすべての変数名に’pre_’とつけたければ、
paste(“くっつけたい文字1”, “くっつけたい文字2”)で結合できます。

なお、ここでは、隙間をつけたくないので、paset0()を使います。
以下のように記載することで変数preにpre_Sepal.Length のような結合された文字列が作られます。

pre<-paste0(“pre_”,namelist)
> pre
[1] “pre_Sepal.Length” “pre_Sepal.Width”  “pre_Petal.Length”
[4] “pre_Petal.Width”  “pre_Species”     

※本来のirisデータはpreとかpostみたいな時系列的な意味は持っていません。

結合した変数名リストに列名を更新する

preに格納した結合文字列にirisの変数名を更新します。
colnamesを使って変数名を変えます

colnames(iris)<-pre

変数名を確認すると、更新されていることがわかります。

iris

まとめ

変数名の頭に文字列を追加する方法を紹介しました。
頭だけでなく、末尾に追加することももちろん可能です。
あらためてステップを確認すると以下の通りです。

  • データセットの列名をリストに格納する
  • くっつけたい文字列と変数名リストを結合する
  • 結合した変数名リストに列名を更新する

意外とこのような細かいことは紹介されていない(というかもっと簡単な方法あるのかな)ので、もし、この内容が少しでも役に立ったら幸いです。

タイトルとURLをコピーしました