2013-11-24 12 views
5

私は3GBのcsvファイルを持っています。私のコンピュータのRに読み込むには大きすぎます。代わりに、完全なデータセットをロードせずに行のサンプル(たとえば、1000)をロードしたいとします。サンプルCSVファイルが大きすぎてRに読み込めませんか?

これは可能ですか?私はどこでも答えを見つけることができないようです。

+6

はsqldfホームページ上の例6eの上を参照してください。 G.Grothendieck @ –

+0

は:私が欲しいのは、特定の行をread.csv選択的ためにRを伝えるためにうん、私はそれはR.で仕事ができるかについて考えてきた私のタスクマネージャから判断すると、ファイル全体をRAMにロードされている – Raffael

+0

CSVファイル。 – Anton

答えて

7

あなたが一度にあなたのデータを分析/ロードできるように革命Rに数千ドルを支払うことをしたくない場合は、遅かれ早かれ、あなたはあなたのデータをサンプリングする方法を把握する必要があります。

そして、そのステップは、(1)LinuxのシェルR.

外で起こることが容易である:

あなたのデータは一貫した形式に陥ると仮定。各行は1レコードです。あなたは行うことができます。この意志ランダムに並べ替え、すべての行

sort -R data | head -n 1000 >data.sample 

をし、別のファイルに最初の1000行を取得 - data.sample

(2)データがメモリに収まるほど小さくない場合。

データを格納するデータベースを使用するための解決策もあります。たとえば、私は美しい表形式でMySQLデータベースに格納されている多くのテーブルを持っています。

select * from tablename order by rand() limit 1000 

をあなたが簡単にRMySQLを使用してMySQLとRとの間で通信を行うことができますし、インデックスあなたの列をクエリの速度を保証することができます:私は実行してサンプルを行うことができます。また、データベースの能力を考慮したい場合は、データセット全体の平均または標準偏差をサンプルと比較して検証できます。

これらは「大きな」データを扱うための私の経験に基づいて、2つの最も一般的に使用される方法です。 1行のソリューションのためのhttp://sqldf.googlecode.com:

+0

+1全体のアイデアは+1ですが、 '-R'オプションを使用する' sort'のバージョンは分かりません。 – flodel

+0

@flodel http://stackoverflow.com/questions/886237/how-can-i-randomize-the-lines-in-a-file-using-a-standard-tools-on-redhat-linux –

+1

@flodelそれRコードではなく、bashコードです。 –

関連する問題