まずは、動作確認用のサンプルコードです。
# サンプルコードのデータフレーム
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というわけです。
登録:
コメント (Atom)
Pythonで、e-Statの市区町村別の人口、面積、年齢データをCSVに変換する
本日はちょっとPython篇。なぜっていうと、Pythonしか使えないよーって人がいるから。こういうテーブルを加工する系はR(というかdplyr)のほうが断然使いやすいとは思いますが、まあバイリンガルになるのも良いでしょう。 例えば、欲しいのは市区町村別の人口や面積や平均年齢のデ...
-
Rでplotなどを使ってグラフを描くとき、x軸やy軸の目盛りは勝手に調整してくれて、大抵の場合はそれで問題ないのですが、たまにちょっと変えたい時があります。そのたびに必死で検索して調べているような気がするので、ここに書き留めておきます。 (最初の方の例はcurve関数を使って...
-
2つ以上のヒストグラムを1つのグラフ上に描画して、比較したいようなときってありますよね。 例えば、集団aのテストの点数と、集団bのテストの点数が、それぞれ1000件ずつあるとしましょう。 # サンプルデータを作っておく a <- rnorm ( 1000 , ...
-
Rで、「123123123...」とか「111222333...」とか「13579...」(奇数)とか「02468...」(偶数)とか、そんな感じの繰り返しを含むような数字の列を作りたい場合、1行でさらっと書けてしまいます。 【繰り返し】 > rep(7, 10) ...