Rでのデータフレームの列と行の名前の変更
概要
Rでデータフレームを使って複雑なコードを書いていると、デフォルトで決まった列の名前がわかりにくくなって変えなければならない状況がある。
names()
例として上のデータフレームを見ると、特に言及がなければV1、V2、V3のように不注意で区別しにくい列名が与えられる。ここでnames()関数をかけると、列名を返し、逆にそこに直接文字列を入れて列名を変えることができる。
ただ単純に代入することでV1、V2、V3がそれぞれun、du、triに変わったことが確認できる。もちろん、これをするためには、元の列の数と要素の数が同じように文字列のベクタを与えなければならない。小規模のデータ処理では大きな問題はないが、独立変数だけで50を軽く越えるビッグデータなどでは扱いが難しい。
インデックシング
面倒にベクタを与えるのではなく、特定の列だけ変えたい場合は、以下のようにインデックスを通して解決できる。
二番目の列名であったduがきれいにtwoに変わったことが確認できる。
dimnames()
よく使うことはないが、行の名前を変えるときはdimnames()
関数を使う。dimnames()
はその名の通り、次元dimensionの名前namesをリスト形式で返したり参照したりする関数だ。
列名を変えるのと同じくらい簡単ではないが、きれいに行名が変わったことが確認できる。
コード
以下が例示コードだ。
example <- as.data.frame(matrix(c(5,10,3,12,15,78),nrow=2)); example
names(example)<-c("un","du","tri"); example
names(example)[2]<-"two"; example
dimnames(example) <- list(row=c("첫줄","둘째줄"),col=names(example)); example