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
まとめ
変数名の頭に文字列を追加する方法を紹介しました。
頭だけでなく、末尾に追加することももちろん可能です。
あらためてステップを確認すると以下の通りです。
- データセットの列名をリストに格納する
- くっつけたい文字列と変数名リストを結合する
- 結合した変数名リストに列名を更新する
意外とこのような細かいことは紹介されていない(というかもっと簡単な方法あるのかな)ので、もし、この内容が少しでも役に立ったら幸いです。