一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

Excelからデータを読み込むR関数(4)とりあえずまとめ。書き込みもふくめて

これまでのまとめ:RでExcelファイルを読み込み/書き込み

R言語で処理するためにExcelからデータを読み込んだり、RからExcelに書き出したりする関数について個人の感想をまとめると下の表のようになります。

パッケージ read write 備考
RODBC ○:xls
○:xlsx
○:xls
△xlsx
Macではxlsx不可。xlsx書き込み?
SQLでデータ抽出できる
readxl ○:xls
○:xlsx
読み込み専用 人によってはDEFINEDNAME: ・・・・と無駄に表示されます。
gdata ○:xls
○:xlsx
×:テキスト形式になる Perl環境必要。
XLConnect ○:xls
○:xlsx
○:xls
○:xlsx
JAVA環境必要。大規模データだと遅い。セル装飾など多才。
xlsReadWrite ○:xls
×:xlsx
○:xls
×:xlsx
Windows専用。xls専用。CRANリポジトリから削除されている。
xlsx ○:xls
○:xlsx
○:xls
○:xlsx
JAVA環境必要。速度向上版のread.xlsx2/write.xlsx2がある。セル装飾など多才。
openxlsx ×:xls
○:xlsx
×:xls
○:xlsx
JAVAに依存しない。WindowsではRtoolsがないと使えない?MacではXcodeが必要。
xlsx専用
WriteXLS 書き込み専用 ○:xls
○:xlsx
Perl環境必要。大規模データも書き出せる。

 なお、PC環境によって動作が異なることも考えられます。私は主としてWindows7-32bit環境、時にWindows10。Excel2007,Excel2003,Excel2013を中心に確認しました。Macは知人によります。

個人の感想です

 一つのパッケージで万能なら良いのですが・・・。

読み込めれば良い人

 読み込めれば良いのであればreadxlが最も簡単でおすすめです。
 書き出しはCSVでも問題ないことが多いでしょうし。

Excel以外からもデータを取り込む人

 各データベースごとに優れたパッケージがありますが、使い分けが面倒だと言うならばまずはRODBCでやってみてはどうでしょうか。

よけいなものをわざわざ入れたくない人

 gdataやopenxlsx、writeXLSはPerlなりRtoolsなりなんなり、必要とされる環境がない人が使おうとすると大変です。
 Perlを他に使わない人が例えば100MB超のStrawberryPerlのインストールから始めるのは大変です。同様にXcodeや巨大なRtoolsのインストールが必要と言われても困る人もいるでしょう。
 何百万行ものデータは必要ならCSVでやりとりするでしょうから、サイズが大きすぎて書き出せないということは私はまずありません。

xls,xlsx両対応だと

 企業ではxls,xlsxどちらも読み書きできることが必要かもしれません。
 JAVAが必要ですが、XLConnect、xlsxが対応しています。

 いずれにしても個性を理解した上で選ぶ必要がありそうです。