r-将高分辨率时间序列中的信息与另一个具有日常信息的时间序列相结合



我有大约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?

使用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

最新更新