我有一个 GPS 数据的时间序列,需要根据时间戳的间隙将其分割成更小的部分。
作为一个例子,考虑下面的数据帧,我想添加一个分段号来分段时间戳的每个“块”,从而在每次时间序列中存在至少30 秒的间隙时有效地吐出数据。
生成的 data.frame 看起来像这样:
timestamp segment
1 1 1
2 3 1
3 5 1
4 10 1
5 42 2
6 45 2
7 92 3
8 156 4
9 160 4
10 162 4
11 163 4
12 164 4
13 200 5
14 203 5
Run Code Online (Sandbox Code Playgroud)
有什么方法可以有效地做到这一点吗?data.frame 是一个分组的 tbl_df(dplyr 包),具有多个不同的时间序列,并且可能非常大。
您的示例数据
t <- c(1, 3, 5, 10, 42, 45, 92, 156, 160, 162, 163, 164, 200, 203)
Run Code Online (Sandbox Code Playgroud)
段数
s <- cumsum(c(TRUE,diff(t)>=30))
Run Code Online (Sandbox Code Playgroud)
输出
data.frame(timestamp=t,segment=s)
Run Code Online (Sandbox Code Playgroud)
时间戳段 1 1 1 2 3 1 3 5 1 4 10 1 5 42 2 6 45 2 7 92 3 8 156 4 9 160 4 10 162 4 11 163 4 12 164 4 13 200 5 14 203 5