Re: [R] Interpolation in time

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Fri 07 Oct 2005 - 00:19:32 EST

Is doy intended to represent the number of days since the beginning of the year? In that case convert the first two columns to class Date and interpolate using approx. See ?approx for variations:

tt <- as.Date(paste(yr, 1, 1, sep = "-")) + doy - 1 ta[,"dat"] <- approx(tt, dat, tt)$y

Even better would be to create an irregular time series object.

library(zoo)
tt <- as.Date(paste(yr, 1, 1, sep = "-")) + doy - 1 ta.z <- na.approx(zoo(dat, tt))

Now ta.z is a zoo object representing your time series. coredata(ta.z) is the data and time(ta.z) are the dates. See:

library(zoo)
vignette("zoo")

for more info.

On 10/6/05, Anette Nørgaard <anette@geoplus.dk> wrote:
> Can anybody help me write a code on the following data example, which
> fills out all NA values by using a linear interpolation with the two
> closest values?
>
> Doy is day of year (%j).
>
> Code example:
> yr<-c(rep(2000,14))
> doy<-c(16:29)
> dat<-c(3.2,NA,NA,NA,NA,NA,NA,5.1,NA,NA,NA,NA,NA,4.6)
> ta<-cbind(yr,doy,dat)
>
> ta
> yr doy dat
> [1,] 2000 16 3.2
> [2,] 2000 17 NA
> [3,] 2000 18 NA
> [4,] 2000 19 NA
> [5,] 2000 20 NA
> [6,] 2000 21 NA
> [7,] 2000 22 NA
> [8,] 2000 23 5.1
> [9,] 2000 24 NA
> [10,] 2000 25 NA
> [11,] 2000 26 NA
> [12,] 2000 27 NA
> [13,] 2000 28 NA
> [14,] 2000 29 4.6
>
> Anette Norgaard
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Oct 07 00:36:18 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 18:25:17 EST