2

ExcelファイルをRから直接読み取るか、最初にcsvに変換するかを検討しようとしています。私は、Excel を読むことのさまざまな可能性について調査しました。また、Excel を読むことには、日付や数値列のデータ型の変換などの短所があることもわかりました。

XLConnect - Java に依存
read.xslx - 大きなデータ セットでは遅い
read.xslx2 - 高速ですが、目的の列クラスを指定するには colClasses コマンドを使用する必要があります
ODBC - 変換の問題が発生する可能性があります
gdata - perl に依存します

データ変換の問題を最小限に抑えて、少なくとも 100 万行を高速に処理できるソリューションを探しています。助言がありますか??

編集

最後に、csv に変換してから csv ファイルを読み取ることにしましたが、大きな csv ファイル (少なくとも 100 万行) を読み取るための最良の方法を見つけなければなりません。

read.csv.ffdf パッケージについて知りましたが、独自の colClass を設定できません。具体的にはこれ

setAs("character","myDate", function(from){ classFun(from) } )
colClasses =c("numeric", "character", "myDate", "numeric", "numeric", "myDate")
z<-read.csv.ffdf(file=pathCsv,  colClasses=colClassesffdf)

これは機能せず、次のエラーが表示されます:-

ff のエラー (initdata = initdata、長さ = 長さ、レベル = レベル、順序付け = 順序付け、: vmode 'list' が実装されていません

RSQlite と ODBC の機能も知っていますが、使用したくありません。上記のエラーの解決策、またはこれを回避する他の方法はありますか?

4

3 に答える 3

5

この質問の後、Hadley Wickham は R パッケージreadxlをリリースしました。これは、C および C++ ライブラリをラップして、.xls.xlsxファイルの両方をそれぞれ読み取ります。これは以前の可能性に比べて大きな改善ですが、問題がないわけではありません。これは高速で簡単ですが、データが乱雑な場合は、どの方法を選択しても何らかの作業を行う必要があります。ルートをたどること.csvは悪い考えではありませんが、分析に手動のステップが導入され、一貫した CSV 出力を提供するためにたまたま使用する Excel のバージョンに依存します。

于 2015-10-31T14:34:57.687 に答える
4

あなたが言及したすべてのソリューションは機能しますが、手動で変換し.csvて読み取ることread.csvがオプションである場合は、それをお勧めします。私の経験では、正しい方が速くて簡単です。

于 2013-08-28T23:51:07.697 に答える
1

速度と大きなデータが必要な場合は、Excel ファイルをデータベース形式に変換してから、R をデータベースに接続することを検討してください。

Google で簡単に検索すると、Excel ファイルを SQLite データベースに変換するためのリンクがいくつか表示され、RSQlite または sqldf パッケージを使用して R に読み込むことができます。

または、ODBC で動作するデータベースの 1 つに変換する場合は、ODBC パッケージを使用します。データベースへの変換を正しく行っていれば、フィールドの変換の問題は少なくなるはずです。

于 2013-08-28T23:51:32.497 に答える