jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

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")