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

时间:2016-04-28 14:53:31

标签: r dataframe add

我有以下数据框

print 'Available letters: ' + available_letters

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

中的小时数相关联

2比1关闭。但是,数字2对应于一个日期,数字1与下一个日期相关联。

我想要一个像

这样的最终数据框
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

有人知道这样做的优雅方式吗?我想用一个巨大的数据框来做同样的事情。

亲切的问候

1 个答案:

答案 0 :(得分:0)

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

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