添加对应于与 R 中两个不同日期关联的不同时间的数字

Add numbers corresponding to different hours associated with two different dates in R

我有以下数据框

set.seed(1000) 
data <- data.frame(date = sort(rep(Sys.Date()-1:3, 5)), 
                   hour = rep(0:4, 3), 
                 values = round(rexp(15),2))

      date     hour  values
1  2016-04-25    0   1.00
2  2016-04-25    1   0.52
3  2016-04-25    2   2.44
4  2016-04-25    3   2.16
5  2016-04-25    4   0.48
6  2016-04-26    0   0.17
7  2016-04-26    1   1.56
8  2016-04-26    2   0.51
9  2016-04-26    3   0.96
10 2016-04-26    4   0.05
11 2016-04-27    0   0.75
12 2016-04-27    1   1.69
13 2016-04-27    2   0.61
14 2016-04-27    3   0.85
15 2016-04-27    4   2.23

我想添加与列值相对应的数字,这些数字应与

的小时数相关联

2比1结束。但是,数字2对应一个日期,数字1对应下一个日期。

我想要一个像

这样的最终数据框
  date    sumvalue
2016-04-26 6.81
2016-04-27 3.96

有人知道执行此操作的优雅方法吗?我想对一个巨大的数据框做同样的事情。

亲切的问候

这是获得预期输出的一种方法

library(data.table)
setDT(data)[, {Un1 <- unique(date)
             i1 <- which(hour==2 & date %in% Un1[-length(Un1)])
             i2 <- which(hour==1 & date %in% Un1[-1])
             v1 <- unlist(Map(function(x,y) sum(values[seq(x,y)]),
                i1, i2))
      list(date = Un1[-1], sumvalue= v1)}]
#         date sumvalue 
#1: 2016-04-26     6.81
#2: 2016-04-27     3.96