2015-03-30 156 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 
相关问题