我不知道我是否在这个问题的正确部分,我已经环顾四周但没有找到答案所以这是我的问题:
我订购的CSV文件如下:
dat <- read.csv(text="Date,Demand
01/01/2012 00:00:00,5061.5
01/01/2012 00:05:00,5030.0
01/01/2012 00:10:00,5011.5
01/01/2012 00:15:00,4983.5
01/01/2012 00:20:00,4963.4
01/01/2012 00:25:00,4980.6
01/01/2012 00:30:00,4969.4
01/01/2012 00:35:00,4961.7
01/01/2012 00:40:00,4929.0
01/01/2012 00:45:00,4907.1
01/01/2012 00:50:00,4892.8
01/01/2012 00:55:00,4870.1
01/01/2012 01:00:00,4860.4",header=TRUE)
我想,日期格式为%m-%d-%Y-%H-%M-%S
我想总结一下需求,以便按小时获取汇总时间:
01/01/2012 00:00:00.................59 560.6 MGW/h
#which is the sum of the 12th first date.
01/01/2012 01:00:00.................xxxxxxx MGW/h
01/01/2012 02:00:00.................xxxxxxx MGW/h
当然我的文件大于那个,我总共超过100万行
所以,我希望我能够为你理解,也许还有一个日期格式问题。如果是这样,有人知道如何在好的方面改变它,我尝试使用as.Date
,但结果不是预期的结果。
答案 0 :(得分:2)
使用示例数据,这样的事情可以起作用:
aggregate(
list(Demand=dat$Demand),
list(DateAgg=
as.POSIXct(trunc(as.POSIXct(dat$Date,format="%m/%d/%Y %H:%M:%S"),"hours"))
),
FUN=sum
)
# DateAgg Demand
#1 2012-01-01 00:00:00 59560.6
#2 2012-01-01 01:00:00 4860.4
答案 1 :(得分:1)
我建议您查看xts
包,这对任何时间序列分析都非常有用。
以下示例将说明如何获得任何周期性的总和
require(xts)
#Convert data to xts format
dat.xts <- xts(dat$Demand, order.by = as.POSIXct(dat$Date, format = "%m/%d/%Y %H:%M:%S"))
period.sum(x = dat.xts, INDEX = endpoints(dat.xts, on = "hours"))
## [,1]
## 2012-01-01 00:55:00 59560.6
## 2012-01-01 01:00:00 4860.4
下面的更多通用示例显示了如何在任何周期性上应用任何功能
period.apply(dat.xts, INDEX = endpoints(dat.xts, on = "mins", k = 20), FUN = "sum")
## [,1]
## 2012-01-01 00:15:00 20086.5
## 2012-01-01 00:35:00 19875.1
## 2012-01-01 00:55:00 19599.0
## 2012-01-01 01:00:00 4860.4
在上面的示例endpoints
函数中,创建要应用任何函数的句点结束点的INDEX
。