Rで条件付き書式(R Advent Calendar 2011)

R Advent Calendar 2011 も3日目ということで私にも順番が回ってきた。
ということで更新。

RとエクセルをつなぐパッケージとしてXLConnectという便利なものがある。
以前Tokyo.Rで少し紹介したのだが、めんどいので書式指定の話については触れなかった。
http://www.slideshare.net/dichika/tokyor18

しかし、Rでピボットテーブルもできるぜええええええって話もあるのでエクセルの牙を一本一本抜いていく意味でも条件付き書式について紹介しておきたい。

おおまかな流れとしては、

  1. 条件に合致したデータの行列番号を抽出
  2. 指定したい書式を作る
  3. データを出力
  4. 抽出した行列番号でセルを指定し、書式を設定する

となる。

以下コード例。

library(XLConnect)

# 新規ブックを作り、車というシートを作る

wb <- loadWorkbook("条件付き書式.xls", create = TRUE)
createSheet(wb, name = "車")

# 条件に合致する行・列番号を抽出する

rowIndex <- which(mtcars$wt > 3.5) + 1 # wtが3.5より大きい行番号を抽出して1を足す(列名分だけ1行ずれるので)
colIndex <- which(names(mtcars) == "wt") # wtの列番号を抽出

# 指定したい書式をつくる

heavyCar <- createCellStyle(wb, name = "HeavyCar")
setFillPattern(heavyCar, fill = XLC$"FILL.SOLID_FOREGROUND")
setFillForegroundColor(heavyCar, color = XLC$"COLOR.RED")

# データを出力する

createName(wb, name = "出力範囲", formula = "車!$A$1")
writeNamedRegion(wb, mtcars, name = "出力範囲")

# 条件に合致するセルに書式を指定する

setCellStyle(wb, sheet = "車", row = rowIndex, col = colIndex,
            cellstyle = heavyCar)

# ブックを閉じる

saveWorkbook(wb)

ということでR始めて2年になりました

来年1月でR歴2年になります。R歴=プログラミング歴なのでプログラミング歴も2年になりますが、なんとか便利パッケージを使ったり不便利パッケージを作ったりできるくらいにはなりました。Tokyo.R始め、全国のRコミュニティの皆さんのおかげです。ただ、まだまだ技術不足でやりたいことも十分にやれていない状況なのでさらなる高みを目指してPythonをがんばろうと思います!さよならR!