我有一个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
答案 0 :(得分:4)
使用cumsum
和diff
:
df$bouts <- cumsum(c(1, diff(df$secs) >= 3))
请记住,逻辑值会自动强制转换为数值0/1,diff
输出总是比输入短一个元素。