我有一个时间序列的全球定位系统数据,需要分割成更小的部分,基于差距在时间戳。
例如,考虑下面的数据框架,我希望添加一个分段号,它分割每个“块”时间戳,在每次时间序列中至少有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有什么办法有效地做到这一点吗?data.frame是一个分组tbl_df (dplyr包),它有几个不同的时间序列,并且可能相当大。
发布于 2016-01-29 16:09:18
如果您的data.frame的名称是"df“
df$segment[1] <- 1
for (i in 2:nrow(df)) {
if (df$timestamp[i] < (df$timestamp[i-1] + 30)) {
df$segment[i] <- df$segment[i-1]
} else {
df$segment[i] <- (df$segment[i-1] + 1)
}
}https://stackoverflow.com/questions/35086962
复制相似问题