簡體   English   中英

如何根據R中所需的規則時間間隔匯總和匯總不規則時間序列數據?

[英]How do I aggregate and sum irregular time-series data based on a desired regular time interval in R?

我有非常不定期的降雨數據。 每次記錄0.01英寸的降雨時,數據記錄器都會記錄下來的時間(秒)。 一些數據點如下所示:

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

有人對此有任何一般性指導嗎? 我會很感激。

將數據幀讀取到一個Zoo對象中,並計算截斷到分鍾的時間,以分鍾為單位累加這些值。 然后計算數據中從前一分鍾到后一分鍾的時間序列,刪除數據中已經存在的所有時間,然后將其合並為零。 如果您真的不需要添加零,則在計算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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM