googleVisとXLConnectで医療費を可視化

使うデータは医療保険医療費データベースの医療費総計(↓をダウンロード)。
http://www.mhlw.go.jp/bunya/iryouhoken/iryouhoken14/xls/01.xls

library(googleVis)
library(XLConnect)

wb <- loadWorkbook("01.xls") #ファイル(ワークブック)を指定する
getSheets(wb) #ファイル内のシート一覧を確認

#データ読み込み関数(医療費だけ指数表示で読み込まれるので手を加える)
getData <- function(wb, sheet){
  data <- readWorksheet(wb, sheet=sheet) #シートを指定して読み込む
  date <- as.Date(paste(sep="", as.numeric(data[12:nrow(data),2]), "01"), format="%Y%m%d")
  if(sheet=="医療費"){
    result <- data.frame(do.call("rbind", strsplit(split="E", data[12:nrow(data),3])), stringsAsFactors=FALSE)
    value <- as.numeric(result[,1]) * 10 ^ as.numeric(result[,2])
    }else{
    value <- as.integer(data[12:nrow(data),3])
    }
  res <- data.frame(date, value)
  colnames(res) <- c("date", sheet)
  invisible(res)
  }

#各データを結合しlongタイプのデータに変形
data <- merge(getData(wb, "件数"), getData(wb, "日数"))
data <- merge(data, getData(wb, "医療費"))
data.m <- melt(data, id.vars="date")

#Motion Chartでプロット
res1 <- gvisMotionChart(data.m, timevar="date", idvar="variable", date.format="%Y-%m-%d", chartid="sample")
res1$html$header <- gsub("charset=utf-8", "charset=shift-jis", res$html$header)
plot(res1)

#医療費シートだけ抽出してAnnotated TimeLineでプロット
data.ms <- subset(data.m, variable=="医療費")
res2 <- gvisAnnotatedTimeLine(data.ms, datevar="date", numvar="value", idvar="variable", date.format="%Y-%m-%d", chartid="sample")
res2$html$header <- gsub("charset=utf-8", "charset=shift-jis", res$html$header)
plot(res2)