Rで大きなデータテーブルを操作していて、テーブル全体をループして、別の列の前の行の値に基づいて、特定の列の行の値を設定しようとしています。
このループを200K行のテーブルで実行しようとしていますが、移動速度が非常に遅くなっています。すべてのdata.tableの効率を利用しているわけではないのではないかと思いますが、どこで改善できるかわかりません。
私のコードは以下です。私のテーブルは「DATA」で、キーは列「x」と「y」です。すべての行をループして、列2の行の値が1でない場合にのみ、列6の行の値を1に設定しようとしています。列2の前の行の値と同じです。
setkey(DATA,x,y)
for (i in 2:nrow(DATA)) {
if (DATA[i,2]!=DATA[i-1,2]){
DATA[i, 6] = 1
}
}
繰り返しますが、これは機能しますが、大きなテーブルの場合は非常に遅くなります。どんな助けでも大歓迎です-ありがとう!