Ho una serie temporali irregolari (con DateTime e RainfallValue) in un file CSV C:\SampleData.csv
:Creazione regolari di 15 minuti il tempo-serie dal irregolari serie temporale
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: Il tempo- irregolare i passaggi potrebbero essere 1 minuto, 15 minuti, 1 ora, ecc. Inoltre, potrebbero essere presenti più osservazioni nell'intervallo desiderato di 15 minuti.
Sto cercando di creare un normale 15 minuti di tempo-serie dal 2000-01-01 al 2001/12/31 che dovrebbe essere simile:
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: La serie temporale è regolare con intervalli di 15 minuti, riempiendo i dati mancanti con 0. Se ci sono più di un punto dati in intervalli di 15 minuti, vengono sommati.
Ecco il mio codice:
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: Il tempo di uscita serie TS_align15min
: (a) ha ripetendo blocchi di timestamp (b) inizia (misteriosamente) dal 1999, come:
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!
generare del codice riproducibili per noi, dput () è utile. Dichiara inoltre l'uso dei pacchetti forniti con la libreria o richiedi. – mdsumner
@mdsumner Grazie per il suggerimento. Ho aggiunto dati di esempio riproducibili e il codice. – akashwani
No, se dipende da un file di dati non è possibile che non sia riproducibile. Vedi la mia risposta per _random data_ con un dato seme - che lo rende riproducibile. –