webdevqa.jp.net

行数でデータフレームを分割する

400,000行と約50列で構成されるデータフレームがあります。このデータフレームは非常に大きいため、処理するには計算量が多すぎます。このデータフレームを小さなデータフレームに分割した後、実行したい関数を実行し、最後にデータフレームを再構成します。

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

25
Pascal

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

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

ddplyパッケージのplyr関数、またはdplyrgroup_by()関数も検討する必要があります。

編集済み簡潔にするため、Hadleyのコメントの後。

データフレームの行数がわからない場合、またはデータフレームの長さが目的のチャンクサイズと等しくない場合は、次のようにすることができます。

_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)
_

将来の読者のために、dplyrおよび_data.table_パッケージに基づくメソッドは、データフレームでグループ単位の操作を実行するためにおそらく(はるかに)高速になります。

34
Ben Bolker