根据采样时间将数据汇总成组

时间:2017-04-21 09:29:06

标签: r dplyr tidyr

我有一系列的降雨数据。我的目标是根据观测时间戳之间的差距将非零降雨值分组为离散事件。

目前,我有一个包含所有非零降雨观测资料的数据框。我想将这些观察结果归结为事件。如果第i行和第j行之间的时隙大于30分钟,我想要触发一个新的事件' /组。这可能使用R:dplyr?

1 个答案:

答案 0 :(得分:1)

也许这可以做到:

library(dplyr)
df <- tibble(
  time = as.POSIXct(c("2016-03-01 08:33:00", "2016-03-01 08:45:00", "2016-03-01 10:00:00", "2016-03-01 10:07:00")),
  value = c(10, 12, 7, 13)
)
df %>% 
  mutate(timegap = difftime(time, lag(time, default = time[1])),
         event = cumsum(as.numeric(timegap) > 30 * 60))

# # A tibble: 4 × 4
#                  time value   timegap event
#                <dttm> <dbl>    <time> <int>
# 1 2016-03-01 08:33:00    10    0 secs     0
# 2 2016-03-01 08:45:00    12  720 secs     0
# 3 2016-03-01 10:00:00     7 4500 secs     1
# 4 2016-03-01 10:07:00    13  420 secs     1