2015年4月25日 (土曜日)

10:38:41 # Life 久しぶりに R でXLSデータソースからグラフを作る。 ggplot2 で作成。手元のデータはCSVとかXLSとかから変換することになるんだけどそうするとデータフレームになる。 家計簿から資産のArea stack graphが作りたいなと思ったんだけどデータフレームから reshape2パッケージに入っている melt 関数で形式を変換。データフレームのコラム名前がカテゴリであるような形式に変換するっぽい。これを理解するまでは困難だったけどあとはスムーズ。 あとNAを足すとNAになってしまうのでNAのところを0に置き換える方法を思い出す。 XLSからの入力はいろいろ方法があるんだけどとりあえずgdataを使ってread.xls()。円形式のところが[$¥411]とかついているのでそれを削除する関数を追加。 2015年4月という日付だとRがおこるので日付を適当に追加する正規表現で処理。 geom_area の使い方が最初意味不明だったんだけど、ggplotの結果に足せばいいらしい。えー。なんかDSL過ぎてよくわからんけどストリームみたいなもんか。戻り値をそのまま表示させようとするとグラフが描画されて何がおきているのかちょっと理解できなかった。Rってそんな言語だったのか?

parseXlsYen <- function(string) {
  # Parse Yen in XLS that is like [$\411]123,456,789
  v <- as.numeric(gsub(',', '', sub('^[[]\\$¥411[]]', "", string)))
  v[is.na(v)] <- 0
  v
}
date <- as.Date(gsub("([0-9]+)年([0-9]+)月", "\\1/\\2/1", rawdata$月))

p <- ggplot(melteddata, aes(y=value, x=date, fill=variable)) +
geom_area(position="stack") + 
xlim(as.Date('2003-01-01'), as.Date('2015-05-01'))
ggsave(file="plot-summary.png", plot=p)
	
Junichi Uekawa