2011-08-14 13 views
15

400,000行と約50個の列からなるデータフレームがあります。このデータフレームは非常に大きいので、計算には課税対象となりすぎてしまいます。 このデータフレームをより小さなものに分割したいと思います。その後、実行したい機能を実行し、最後にデータフレームを再構成します。データフレームを行数で分割する

このデータフレームを分割するために使用したいグループ化変数はありません。私はちょうど行の数で分割したいと思います。たとえば、400'000行のテーブルを400個の1'000行のデータフレームに分割したいとします。 どうすればよいですか?

答えて

20

独自のグループ化変数を作成します。

d <- split(my_data_frame,rep(1:400,each=1000)) 

またplyrパッケージ、またはdplyrからgroup_by()関数からddply機能を検討すべきです。

編集した、ハドレーのコメント後。

あなたは、データフレーム内にある行数がわからない場合、またはデータフレームをご希望のチャンクサイズの長さが等しくないかもしれない場合、あなたはまた、

を使用することができ

chunk <- 1000 
n <- nrow(my_data_frame) 
r <- rep(1:ceiling(n/chunk),each=chunk)[1:n] 
d <- split(my_data_frame,r) 

を行うことができます将来の読者のために

r <- ggplot2::cut_width(1:n,chunk,boundary=0) 

dplyrdata.tableパッケージに基づいた方法は、おそらくより高速なデータフレームにグループ単位の演算を行うための(多くの)となります。

+0

ありがとうございます!それは素晴らしい作品です!そして、はい、私はplyrパッケージを見ていきます。 – Pascal

+0

どうして 'split.data.frame'を使用していて、' split'を使用していませんか?グループ化変数をある要素に強制する必要はありません。 – hadley

+0

は、これらの強制/メソッドのディスパッチが機能するかどうか確信が持てず、テストに時間を掛けるのが面倒だった。ありがとう。 –

関連する問題