2015-03-30 158 views
1

我有非常不規則的降雨量數據。每次記錄下降0.01英寸的雨量時,數據記錄器都會將時間記錄爲秒。有幾個數據點是這樣的:如何根據R中所需的常規時間間隔對不規則時間序列數據進行彙總和求和?

datetime <- as.POSIXct(as.character(c("2/5/15 16:28:38", "2/5/15 16:29:36", "2/5/15 16:29:41", "2/5/15 16:30:00")), format="%m/%d/%y %H:%M:%S") 
value <- rep(0.01, 4) 
df <- data.frame(datetime, value) 
df 


>     datetime value 
>  1 2015-02-05 16:28:38 0.01 
>  2 2015-02-05 16:29:36 0.01 
>  3 2015-02-05 16:29:41 0.01 
>  4 2015-02-05 16:30:00 0.01 

我試圖讓動物園和XTS的竅門,但無濟於事。我的最終目標是將「數值」加上一分鐘,如下所示:

2015-02-05 16:27 0 
2015-02-05 16:28 0.01 
2015-02-05 16:29 0.02 
2015-02-05 16:30 0.01 
2015-02-05 16:31 0 

有沒有人有這方面的一般指導?我會非常感激。

+0

'彙總(值〜格式(日期時間, 「%F%H:%M」 ),df,sum)'? – 2015-03-30 20:18:55

回答

1

將數據框讀入動物園對象並計算截止到分鐘的時間,以分鐘爲單位累計數值。然後計算從我們數據中的一分鐘之前到一分鐘之後的一系列時間,在數據中隨時刪除 併合並填充零。如果你並不真正需要的附加零次,然後計算zcum後停止:

library(zoo) 

z <- read.zoo(df, tz = "") 
mins <- trunc(time(z), "mins") 
zcum <- ave(z, mins, FUN = cumsum) 

rng <- range(mins) 
tt <- seq(rng[1] - 60, rng[2] + 60, by = "mins") 
tt <- tt[ ! format(tt) %in% format(mins) ] 
merge(zcum, zoo(, tt), fill = 0) 

捐贈:

2015-02-05 16:27:00 2015-02-05 16:28:38 2015-02-05 16:29:36 2015-02-05 16:29:41 
       0.00    0.01    0.01    0.02 
2015-02-05 16:30:00 2015-02-05 16:31:00 
       0.01    0.00 
相關問題