聚合分钟到小时的需求

时间:2014-03-13 03:59:31

标签: r date sum aggregate import-from-csv

我不知道我是否在这个问题的正确部分,我已经环顾四周但没有找到答案所以这是我的问题:

我订购的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,但结果不是预期的结果。

2 个答案:

答案 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