2014-03-13 50 views
2

如果我在這個問題上的右側部分,我不知道,我環顧四周,並沒有因此在這裏找到答案是我的問題:彙總分鐘時間的需求

我有一個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但結果不是預期的結果。

+1

請以可以粘貼到解釋器中的格式顯示示例數據。使用'dput'獲取機器可讀的數據。這可能有一個直接的解決方案,但不可能猜測你在這裏有什麼。 –

回答

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 
+0

它完美的工作,非常感謝您的快速回答 最好的問候 – Adrien

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

+0

它的作品,以及我可以適用於不同的數據框 非常感謝你的幫助球員 欣賞它 – Adrien