Excel と R
前回に引き続きExcelと外部ツールの連携についての調査で、フリーの統計解析ツールとして有名なRを試してみました。
Rは以前R.NETの話題で投稿しましたが、とても強力なツールで時々使用しています。解析という点では、Excelだけで十分なことも多いのですが、作業環境といった点で使い分けるメリットは大きいと思っています。
連携ツールには、RExcelというアドインを使いました。
環境 : R version 3.0.0, Excel 2010 / Windows 7
1) 以下をインストールします
RExcel_3.2.13
statconnDCOM3.5-1B2_Noncommercial
2) Rでは、
rscproxy
rcom
をインストールします
http://rcom.univie.ac.at/download.html
3) ExcelのオプションからアドインRExcel2007を組み込みます
使用するExcelは2010ですが、これでも動作しました。(たまにエラーがでて不安定な気もしますが、一応動いています)
参考) http://d.hatena.ne.jp/Rion778/20091012/1255362015
これで、プレゼンテーションはExcel、バックグランドはRといった使い分けをした例をつくってみました。
テストの意図は、データスライダーでデータの分布をリアルタイムに変更させたものをRでデータと回帰分析結果をグラフ表示するといったものです。
回帰分析自体はExcelだけでもできますが、わかりやすい例ということでRでやってみました。
興味深い点は、以下のRのソースをエクセルで記述して、範囲指定して関数定義できます。それをRApply関数を通して実行できます。
function(x,y,L){ xy <- data.frame(x=x,y=y) xy.lm <- lm(x~y,data=xy) plot(x, type="l",xlim=c(0,16),ylim=c(0,L),col="green",lwd=1) par(new=T) plot(y, xlim=c(0,16), ylim=c(0,L), col="red", pch=3) abline(xy.lm, col="blue", lwd=2) }
これも含めて、いくつかのわかりやすいデモが用意されています。
今回はわざわざスライダーやブロットという見た目わかりやすいものを使いましたが、ExcelシートのデータをRにデータフレームという形で渡し、Rで演算した結果を地味にExcelに戻すというのは使えるのではと思いました。
RではExcelにないライブラリを使えるのも魅力ですが、Matlabのようにマトリックス演算を使って自前でいろいろプログラミングできるのは面白そうです。
最近このジャンルには、いろんな可能性を感じているため鋭意調査・勉強中ですが、やりたいことがたくさんあるのに時間が不足している状況です。少しづづ整理して、またまとめていきたいと思っています。
しかしながら、ExcelとRの書籍を比べてみると、Excelはカラーで数も多く価格も安い反面Rはそれとは逆の傾向にありますね。当然といえば当然ですが、通常の業務を考えてみてもExcelの普及率、利用率の高さにはとても驚かされる次第です。(仕様書読んだり作成したりとか多いですが・・)