添加对应于与 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
我有以下数据框
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