R言語でデータの並べ替え
今回はR言語でデータの並べ方を変える方法を紹介します。
具体例
具体例を見てもらうのが一番わかりやすいので、先に何をしたいのかを示します。
例えばあるデータがこんな風に並べられているとします。
ID | preTest | postTest |
1 | 100 | 90 |
2 | 85 | 95 |
これをこのように並べ替えたいとします。
ID | testType | score | |
1 | preTest | 100 | |
1 | postTest | 90 | |
2 | preTest | 85 | |
2 | postTest | 95 |
これを簡単に実現できるのがreshape2パッケージのmelt関数です。
melt関数
melt関数の引数は以下の通りです。
x 最初のデータフレームオブジェクト
id.vars まとめない変数
measure.vars まとめる変数
variable.name まとめた変数の変数名
value.name 得点の変数名
melt関数の使い方
次のように指定します。
install.packages(reshape2) library(reshape2) newdata <- melt(originaldata, id.vars = ID, measure.vars = c("preTest", "postTest"), variable.name = "testType", value.name = "score")
元に戻す時はdcast関数
元の形に戻す時には同じreshape2パッケージのdcast関数が使えます。使用法は次のような感じです。
returndata <- dcast(newdata, ID ~ testType, value.var = "score")