まずは、動作確認用のサンプルコードです。
# サンプルコードのデータフレーム
age <- c( 20, 30, 40)
height <- c(170, 168, 175)
wait <- c( 67, 64, 70)
df <- data.frame(age, height, wait)
df
age height wait
1 20 170 67
2 30 168 64
3 40 175 70
ちょ、待てよ。体重のweightがwaitになってんじゃん。
ってことで、この列名だけ変更したいと。
列名全体のベクトルをまとめて指定して変更する方法↓
names(df) <- c("age", "height", "weight")
とか、
インデックス番号を使って、一部を変更する方法↓
names(df)[3] <- "weight"
とかがあるんですが、列数がめちゃめちゃ多いデータだと数えるのが大変だし、列の削除や挿入に対してロバストでないし。できれば、列名の指定で変更を行いたい。
ちょっとコードがごちゃごちゃしますが、↓こんな感じでできます。
names(df)[ which( names(df)=="wait" ) ] <- "weight"
内側から順に見ていくと・・・
names(df)=="wait" で、列名が "wait" になっている位置が
FALSE FALSE TRUE
というベクトルで返ってきます。
それを which() に渡すと、「3」というインデックス番号が返ってきます。
なのでこの「3」を names(df)[] に対するインデックスの指定に使えばOKというわけです。
0 件のコメント:
コメントを投稿