[R] Linear Interpolation question

Ralf B ralf.bierig at gmail.com
Thu Jul 29 23:16:02 CEST 2010


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?

Ralf



More information about the R-help mailing list