2013-04-08 156 views
1

Example Of DataR個時間序列數據聚合非相等的時間步驟

我有以下的數據即雨量計讀數的時間序列集合。時間標記是雨量計每增加一次計數,而體積就是加在水桶上的雨量。我需要將數據彙總到每小時,每小時6小時,每週,每週添加到存儲桶中的總雨量的幾個不同類別中。我嘗試使用StachOverflow周圍發佈的一些其他數據聚合方法,但他們採用正常的收集時間間隔。我對R不太好,所以原諒我,如果這是一個超級簡單的編輯已經發布的代碼。

我知道數據是從Excel快照,但是這僅僅是這樣,因爲我無法弄清楚如何發佈附加表

這將很好地格式化在這個論壇的視覺目的是數據的CSV

Data File Here

+0

它看起來像你有一週分鐘的時間步長。爲什麼不用0填補空白,並使用你找到的其他方法之一? – 2013-04-08 19:10:48

+0

您是否在尋找滾動平均值或某個時間零點的總量?你可能會想要使用一些「累計和」測試來定義接近6小時的地方,等等。 – igelkott 2013-04-08 19:11:24

+0

想要總結這些值,至於填充0,每分鐘有多個度量,比如6:33, 6:34結束。 – DanTheMan 2013-04-08 19:19:44

回答

1

一種選擇是使用包Lubridate:

library(lubridate) 
timeseries <- read.csv("project1.csv", sep=",", header=T, dec=".") 
timeseries[,1] <- mdy_hm(timeseries[,1]) 

日期已被轉換爲在R中被廣泛認可的POSIXct。 接下來,日期被四捨五入爲最接近的單位。 單位可以設置爲例如:小時,天,月等 四捨五入的日期存儲在一個新的data.frame,然後與原始data.frame連接。 最後一步是將這些值彙總到四捨五入的日期。結果

rdate <- ceiling_date(x=timeseries[,1],unit="hour") 
temp <- cbind(rdate,timeseries) 
timeseries_hour <- aggregate(x=temp[3],by=list(temp[,1]),FUN=sum) 

部分:

head(timeseries_hour) 
      Group.1 Ppt..Amount 
1 1996-05-02 01:00:00  0.03 
2 1996-05-02 02:00:00  0.02 
3 1996-05-02 05:00:00  0.01 
4 1996-05-02 06:00:00  0.04 
5 1996-05-02 07:00:00  0.38 
6 1996-05-02 08:00:00  0.13 
+0

這會工作,但是它會下降四捨五入,因此1:04和1:19會在第一個小時內計數,這是第二個小時。需要弄清楚如何讓它不會下滑。此外,「時間序列[,1] < - dmy_hm(時間序列[,1])」不斷出錯。 – DanTheMan 2013-04-09 18:43:12

+0

您可以嘗試使用'ceiling_date(x =時間序列[,1],單位=「小時」)'而不是'round_date(x = timeseries [,1],unit =「hour」)''。你能證明你得到了什麼樣的錯誤嗎? – Timror 2013-04-09 20:25:05