将高分辨率时间序列中的信息与另一个时间序列中的信息结合起

时间:2015-04-01 13:25:04

标签: r time-series dplyr

我有测量数据 - 比如 - 大约1分钟的分辨率,但不规则。

timeSeries
  time                signal
1 2015-03-30 00:00:00   17.3
2 2015-03-30 00:01:00   16.2
3 2015-03-30 00:02:01   18.4
4 2015-03-30 00:04:03   17.7

在第二个数据框中,我有每日信息。

dailyInfo
  firstEvent          yesterday
1 2015-03-28 17:01:43 2015-03-27 15:25:51
2 2015-03-29 17:04:55 2015-03-28 17:01:43
3 2015-03-30 16:59:03 2015-03-29 17:04:55

dailyInfo$firstEvent是我的界限。我想做像

这样的事情
timeSeries %>% 
  group_by(between(time, dailyInfo$yesterday, dailyInfo$firstEvent))

在教程中,信息始终已存在于一个数据框中(例如iris %>% group_by(Species) %>% ...)。

我的解决方法是计算每组边界之间的行数,然后复制firstEvent - 经常连接的条目,并将生成的向量作为新列放入timeSeries

这不是很优雅,所以也许有人可以帮助我如何使用dplyr?

1 个答案:

答案 0 :(得分:2)

使用cut

timeSeries %>%
    mutate(interval = cut(time, dailyInfo$firstEvent)) %>%
    group_by(interval)

或直接在group_by

中计算间隔
timeSeries %>%
    group_by(interval = cut(time, dailyInfo$firstEvent))

                 time signal            interval
1 2015-03-30 00:00:00   17.3 2015-03-29 17:04:55
2 2015-03-30 00:01:00   16.2 2015-03-29 17:04:55
3 2015-03-30 00:02:01   18.4 2015-03-29 17:04:55
4 2015-03-30 00:04:03   17.7 2015-03-29 17:04:55