根据采样时间将数据汇总到组中
Summing data into groups based on sample time
我有一系列天数的降雨数据。我的目标是根据观察时间戳之间的差距将非零降雨值分组为离散事件。
目前,我有一个包含所有非零降雨观测值的数据框。我想将这些观察总结为事件。如果第 i 行和第 j 行之间的时间间隔大于 30 分钟,我希望触发一个新的 'event'/group。这可能使用 R:dplyr?
也许这可以做到:
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
我有一系列天数的降雨数据。我的目标是根据观察时间戳之间的差距将非零降雨值分组为离散事件。
目前,我有一个包含所有非零降雨观测值的数据框。我想将这些观察总结为事件。如果第 i 行和第 j 行之间的时间间隔大于 30 分钟,我希望触发一个新的 'event'/group。这可能使用 R:dplyr?
也许这可以做到:
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