2016-03-29 4 views
0

私は秒の列を持つGPS位置のデータフレームを持っています。タイムギャップに基づいて新しい列を作成するにはどうすればよいですか?すなわち、このdata.frameのために:時間間隔が定義された値を超えた場合のデータの分割

df <- data.frame(secs=c(1,2,3,4,5,6,7,10,11,12,13,14,20,21,22,23,24,28,29,31)) 

私は3秒以上秒の位置の間の時間差がある場合に、データフレームをカットしたいとランニングタリーを与える「発作」と題する新しい列を作成します

id secs bouts 
1  1  1 
2  2  1 
3  3  1 
4  4  1 
5  5  1 
6  6  1 
7  7  1 
8 10  2 
9 11  2 
10 12  2 
11 13  2 
12 14  2 
13 20  3 
14 21  3 
15 22  3 
16 23  3 
17 24  3 
18 28  4 
19 29  4 
20 31  4 

答えて

4

使用cumsumdiff

df$bouts <- cumsum(c(1, diff(df$secs) >= 3)) 

は、その論理値GEを忘れないでください。このように見えるデータフレームを与えるために、セクション数の自動的に数値0/1に強制的に変換され、そのdiff出力は常に入力より1つ短い要素です。

+0

Spot on、ありがとう@Roland –

関連する問題