Tengo una serie de tiempo irregulares (con fecha y hora y RainfallValue) en un archivo csv C:\SampleData.csv
:Creación de series de tiempo regular de 15 minutos a partir de las series de tiempo irregulares
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
Nota: El tiempo- irregulares los pasos podrían ser de 1 minuto, 15 minutos, 1 hora, etc. Además, podría haber múltiples observaciones en un intervalo deseado de 15 minutos.
Estoy tratando de crear un tiempo-serie regular de 15 minutos desde el 2000-01-01 a 2001-12-31 que debe verse como:
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
Nota: El de series de tiempo es regular con intervalos de 15 minutos, llenando los datos faltantes con 0. Si hay más de un punto de datos en intervalos de 15 minutos, se suman.
He aquí es mi código:
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)
Problema: El tiempo de salida de la serie TS_align15min
: (a) se repiten bloques de sellos de tiempo (b) comience (misteriosamente) a partir de 1999, como:
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
What am I doing wrong?
Thank you for any direction!
generar algo de código reproducible para nosotros, dput () es útil. También declare el uso de paquetes contribuidos con la biblioteca o requiera. – mdsumner
@mdsumner Gracias por su sugerencia. He agregado datos de muestra reproducibles y el código. – akashwani
No, si depende de un archivo de datos que no tenemos, no es reproducible. Ver mi respuesta para _dandom data_ con una semilla dada - que la hace reproducible. –