1

以下のスクリプトを使用して、RODBCを使用して〜10000行と〜250列のxlsファイルをインポートしています。

channel <- odbcConnectExcel(xls.file="s:/demo.xls")
demo <- sqlFetch(channel,"Sheet_1")
odbcClose(channel)

インポートプロセス中に、そのxlsファイルを開いたり閉じたりしました。

念のため、Rとxlsファイル自体の行数をチェックして、インポートが破損していないことを確認しました。そうです、行数は同じままなので、インポートプロセスは問題ないと思います。

データの集計を開始すると問題が発生します。行番号が同じでも、一部の行が実際に破損していることにUID気付き、内部にあり、データフレームの後半でUIDが混乱していることに気付きます(例:同じ行が2回複製されます)。

ファイルを再度インポートし、xlsファイルをあえて開いたり閉じたりしないでください。今回は、問題なく動作しています。

RODBCで読み取っているときにxlsファイルを開いたり閉じたりしないというレッスンを学びましたが、データが混乱しないようにする方法、またはデータセットをエラーなしで実際にインポートしたことを確認するにはどうすればよいですか?インポートされますか?

ありがとう。

PSデータフレームをcsvにエクスポートし、xlsをcsvにエクスポートしてから、追加の手段としてチェックサムを比較することを考えていますが、他の方法はありますか?

4

1 に答える 1

1

read.xlsパッケージの関数を使用しgdataます (「install.packages(gdata)」を使用してインストールします)。

私が正しければ、これにより、開いていないExcelファイルから読み取ることができます。一部の Perl モジュールのラッパーであるため、機能するかどうかは、それらがインストールされているかどうかに依存する場合があります。

Data Export/Import の R マニュアルを引用します。

Perl ユーザーは、モジュール OLE::SpreadSheet::ParseExcel と、Excel 95–2003 スプレッドシートを CSV ファイルに変換するプログラム xls2csv.pl に貢献しました。パッケージ gdata は、その read.xls 関数で基本的なラッパーを提供します。適切な Perl モジュールがインストールされている場合、この関数は Excel 2007 スプレッドシートも読み取ることができます。

一般に、Excel から R にデータを取得する最も安全な方法は、csv エクスポートを使用することです。

于 2011-09-01T14:39:27.593 に答える