当时间间隔超过定义值时拆分数据

时间:2016-03-29 14:00:07

标签: r

我有一个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秒或更多秒的位置之间存在时间间隔时剪切数据框,并创建一个名为“bouts&#39;”的新列。它给出了一个部分数量的运行计数,以给出如下所示的数据框:

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

1 个答案:

答案 0 :(得分:4)

使用cumsumdiff

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

请记住,逻辑值会自动强制转换为数值0/1,diff输出总是比输入短一个元素。