2017-01-05 18 views
0

私は約400万行のデータセットを持っています。データの例は以下の通りです。私は、複数の開始条件と終了条件を持つループを実行したいと思います。ループを開始および終了するための複数の条件

ループでは最初にspeed = 0とload = 0が検索されます。次に、負荷の変化を検出する必要があります(speed = 0、load = 0ではない例sl no = 6)。負荷の変化が検出されると、ループは前の3行からのコピーを開始します。 sl no。 3.速度が検出されたとき(速度とペイロードがゼロに等しくないとき)にループが終了し、次の3行をコピーする必要があります。したがって、ループ3〜12からコピーを開始するにはループが必要です。ループは再び繰り返され、開始2の条件が検索されます。

Sl.No Speed Load 
1  20  50 
2  20  10 
3   0  0 
4   0  0 
5   0  0 
6   0  60 
7   0  120 
8   0  180 
9   10  180 
10  11  180 
11  20  180 
12  25  180 
+0

あなたの意図する質問をより明確にするために期待される出力を提供します。 [このガイド](http://stackoverflow.com/help/mcve)を参照してください。 – Aramis7d

答えて

1

あなたは(ネストされたループである)このような何かを書き、その後、バックと前進するために、それらにインデックスiとjを使用する必要があります。代わりに、通常の使用の

for(i in seq_along(data)){ 
    if(#your condition e.g. data[i][1]==0 & data[i][2]==0) 
    { 
    # do something with data[i] 
    # do something with data[i-1] 
    # do something with data[i-2] 
    # do something with data[i-3] 
    j <- i + 1 
    while(#your other condition: e.g. data[j][1]==...) 
    { 
     # do something with data[j] 
     j <- j + 1 
    } 
    # Next three: 
    # do something with data[j] 
    # do something with data[j+1] 
    # do something with data[j+2] 
} 

注意Rのforeachスタイルのループ:(データ内のアイテム)のために、私はインデックスを参照しています。

関連する問題