# Re: [R] ts to irts

From: Gabor Grothendieck <ggrothendieck_at_myway.com>
Date: Sat 24 Jul 2004 - 02:17:02 EST

Gabor Grothendieck <ggrothendieck <at> myway.com> writes:

:
: 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
: 1,2,3,...)
:
: 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)))

I forgot one set of parentheses in the second last line. It should 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)))

R-help@stat.math.ethz.ch mailing list