[R] ts to irts

Gabor Grothendieck ggrothendieck at myway.com
Fri Jul 23 16:57:10 CEST 2004

Jan Verbesselt <Jan.Verbesselt <at> agr.kuleuven.ac.be> writes:

: I'm working with irregular time series (time series of climate data,
: daily data 365/6 days a year) and would like to create regular time
: series from them ( irts 
: 	e.g. Rain            <-
: irts(as.POSIXct(Climate[,1]),Climate[,5]) 
: 		to ts
:     e.g. test <- ts(x, start=c(1997,1), frequency=365) )
: such that I can find where the gaps (lacking temperature data, ...) are
: and try out methods to fill the gaps.
: The main objective is to detect gaps, how long they are and fill them if
: possible with average, median values.

First we create vectors of dates and values, d and val,
to use as test data.

Then we create, dd, a regular time vector of dates using 
class Date and a corresponding logical vector not.na 
indicating which dates in dd correspond to observations.

Finally, we average the previous non-missing and next
non-missing observation for each data point and convert the
result to class ts.  The last line sets the time coordinates
to the numeric representation of the Date class of the
corresponding dates.  (If you leave it out the times will be

d <- structure(c(11,14,20,22), class = "Date")
val <- c(10,20,30,40)

dd <- seq(min(d), max(d), by = "day")
not.na <- dd %in% d

my.ts <- ts(val[cumsum(not.na)] + val[cumsum(not.na)+!not.na]/2)
my.ts <- ts(my.ts, start = as.numeric(min(d)), end = as.numeric(max(d)))

More information about the R-help mailing list