Criando séries temporais regulares de 15 minutos a partir de séries temporais irregulares
Eu tenho uma série temporal irregular (com DateTime e RainfallValue) em um arquivo csvC:\SampleData.csv
:
<code> DateTime,RainInches 1/6/2000 11:59,0 1/6/2000 23:59,0.01 1/7/2000 11:59,0 1/13/2000 23:59,0 1/14/2000 0:00,0 1/14/2000 23:59,0 4/14/2000 3:07,0.01 4/14/2000 3:12,0.03 4/14/2000 3:19,0.01 12/31/2001 22:44,0 12/31/2001 22:59,0.07 12/31/2001 23:14,0 12/31/2001 23:29,0 12/31/2001 23:44,0.01 12/31/2001 23:59,0.01 </code>
Nota: Os intervalos de tempo irregulares podem ser 1 min, 15 min, 1 hora, etc. Além disso, pode haver várias observações em um intervalo de 15 min desejado.
Eu estou tentando criar uma série de tempo regular de 15 minutos de 2000-01-01 a 2001-12-31 que deve se parecer com:
<code> 2000-01-01 00:15:00 0.00 2000-01-01 00:30:00 0.00 2000-01-01 00:45:00 0.00 ... 2001-12-31 23:30:00 0.01 2001-12-31 23:45:00 0.01 </code>
Nota: A série temporal é regular com intervalos de 15 minutos, preenchendo os dados ausentes com 0. Se houver mais de um ponto de dados em intervalos de 15 minutos, eles serão somados.
Aqui está o meu código:
<code> library(zoo) library(xts) filename = "C:\\SampleData.csv" ReadData <- read.zoo(filename, format = "%m/%d/%Y %H:%M", sep=",", tz="UTC", header=TRUE) # read .csv as a ZOO object RawData <- aggregate(ReadData, index(ReadData), sum) # Merge duplicate time stamps and SUM the corresponding data (CAUTION) RawDataSeries <- as.xts(RawData,order.by =index(RawData)) #convert to an XTS object RegularTimes <- seq(as.POSIXct("2000-01-01 00:00:00", tz = "UTC"), as.POSIXct("2001-12-31 23:45:00", tz = "UTC"), by = 60*15) BlankTimeSeries <- xts((rep(0,length(RegularTimes))),order.by = RegularTimes) MergedTimeSeries <- merge(RawDataSeries,BlankTimeSeries) TS_sum15min <- period.apply(MergedTimeSeries,endpoints(MergedTimeSeries, "minutes", 15), sum, na.rm = TRUE ) TS_align15min <- align.time( TS_sum15min [endpoints(TS_sum15min , "minutes", 15)], n=60*15) </code>
Problema: A série temporal de saídaTS_align15min
: (a) tem repetidos blocos de carimbos de tempo (b) começa (misteriosamente) a partir de 1999, como:
<code>1999-12-31 19:15:00 0 1999-12-31 19:30:00 0 1999-12-31 19:45:00 0 1999-12-31 20:00:00 0 1999-12-31 20:15:00 0 1999-12-31 20:30:00 0 </code>
O que estou fazendo de errado?
Obrigado por qualquer direção!