On Thu, Jul 29, 2010 at 5:16 PM, Ralf B <ralf.bie...@gmail.com> wrote: > Hi R experts, > > I have the following timeseries data: > > #example data structure > a <- c(NA,1,NA,5,NA,NA,NA,10,NA,NA) > c <- c(1:10) > df <- data.frame(timestamp=a, sequence=c) > print(df) > > where i would like to linearly interpolate between the points 1,5, and > 10 in 'timestamp'. Original timestamps should not be modified. Here > the code I use to run the interpolation (so far): > > # linear interpolation > print(c) > results <- approx(df$sequence, df$timestamp, n=NROW(df)) > print(results) > df$timestamp <- results$y > > # plotting > plot(c, a, main = "Linear Interpolation with approx") > points(results, col = 2, pch = "*") > > # new dataframe > print(df) > > when looking at the result dataframe however, I can see that the > original timestamps have been shifted as well. however would i would > like to have is a result where the timestamps at position 2,4 and 8 > remain unchanged at the values 1,5, and 10. I also would like values > before the first item to be constant. So the dataframe should look > like this: > > > timestamp sequence > 1 1.000000 1 > 2 1.000000 2 > 3 3.000000 3 > 4 5.000000 4 > 5 6.250000 5 > 6 7.500000 6 > 7 8.750000 7 > 8 10.00000 8 > 9 10.000000 9 > 10 10.000000 10 > > How do I have the change the syntax of my script to make that work? >
Try this: library(zoo) # test data z <- zoo(c(NA,1,NA,5,NA,NA,NA,10,NA,NA), 1:10) # linear approx z.na <- na.approx(z, rule = 2); z.na # plot both series plot(cbind(z.na, z), screen = 1, type = c("o", "p"), pch = c("+", "o"), col = 1:2) ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.