これまでのまとめ: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が対応しています。
いずれにしても個性を理解した上で選ぶ必要がありそうです。