reshape::melt を用いたデータ整形

reshape2

ggplot2はRでプロットする際に頻繁に用いられる。

しかし、Excelのデータをcsvにしてそのまま読み込んでggplot2に渡したところで、データの形を勝手に判断してくれるわけがない。ggplotはわがままなので、データの整形という処理が必要だ。

いってしまえばデータの整形でデータ可視化のプロセスの8割は終わるようなものだ。

ggplot2に適した形にデータを整形する際、reshape2とかいうとても便利なパッケージがある。 その中でもよく使う関数、meltについて、まとめておく。

melt

文字通り、データを溶かし込むのに使う。
read.csv とかで読み込んだらこんな形式だろう。

> a
  id blue red
1  1    1   0
2  1    0   1
3  2    1   0
4  2    0   1

溶かし込む。

> melt(data = a, id.vars = "id", measure.vars = c("blue", "red"))
  id variable value
1  1     blue     1
2  1     blue     0
3  2     blue     1
4  2     blue     0
5  1      red     0
6  1      red     1
7  2      red     0
8  2      red     1
data

読み込みたいdata.frameを指定

id.vars

data.frame中の維持したい列名を文字列で指定。 何も指定しなければ measure.vars 以外のすべて。

measure.vars

列名を variable に、値を value に分解したい列名を文字列で指定。 何も指定しなければ id.vars 以外のすべて。

variable.name

meltされた列名を格納する新しい列の名前。defaultはvariable。

value.name

meltされた値を格納する新しい列の名前。defaultはvalue

na.rm

NA を除きたい場合はTrueにする。