これは無害な単純な問題のように見えるかもしれませんが、実行には非常に長い時間がかかります。高速化やベクトル化などのアイデアは大歓迎です。
500 万行と 50 列の R データ フレームがあります。OriginalDataFrame
そのフレームからのインデックスのリスト: IndexList
(55000 [ numIndex
] 個の一意のインデックス)
時系列であるため、55,000 の一意のインデックスに対して約 5,000,000 行あります。
はOriginalDataFrame
によって注文されましたdataIndex
。のすべてのインデックスが にIndexList
存在しませんOriginalDataFrame
。タスクは、存在するインデックスを見つけて、新しいデータ フレームを構築することです。FinalDataFrame
現在、次を使用してこのコードを実行していますlibrary(foreach)
:
FinalDataFrame <- foreach (i=1:numIndex, .combine="rbind") %dopar% {
OriginalDataFrame[(OriginalDataFrame$dataIndex == IndexList[i]),]
}
これを 24 コアと 128GB RAM のマシンで実行しましたが、完了するまでに約 6 時間かかりました。
私は非常にばかげたことをしていますか、Rでこれを行うためのより良い方法はありますか?