How to Perform Linear Interpolation in R (With Example)

Linear interpolation is the process of estimating an unknown value of a function between two known values.

Given two known values (x1, y1) and (x2, y2), we can estimate the y-value for some point x by using the following formula:

y = y1 + (x-x1)(y2-y1)/(x2-x1)

The following example shows how perform linear interpolation in R.

Example: Linear Interpolation in R

Suppose we have the following data frame with x and y values in R:

#define data frame
df <- data.frame(x=c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20),
                 y=c(4, 7, 11, 16, 22, 29, 38, 49, 63, 80))

#view data frame

    x  y
1   2  4
2   4  7
3   6 11
4   8 16
5  10 22
6  12 29
7  14 38
8  16 49
9  18 63
10 20 80

We can use the following code to create a scatterplot to visualize the (x, y) values in the data frame:

#create scatterplot
plot(df$x, df$y, col='blue', pch=19)

Now suppose that we’d like to find the y-value associated with a new x-value of 13.

We can use the approx() function in R to do so:

#fit linear regression model using data frame
model <- lm(y ~ x, data = df)

#interpolate y value based on x value of 13
y_new = approx(df$x, df$y, xout=13)

#view interpolated y value

[1] 13

[1] 33.5

The estimated y-value turns out to be 33.5.

If we add the point (13, 33.5) to our plot, it appears to match the function quite well:

#create scatterplot
plot(df$x, df$y, col='blue', pch=19)

#add the predicted point to the scatterplot
points(13, y_new$y, col='red', pch=19)

linear interpolation in R

We can use this exact formula to perform linear interpolation for any new x-value.

Additional Resources

The following tutorials explain how to perform other common tasks in R:

How to Solve a System of Equations in R
How to Predict Values in R Using Multiple Regression Model

2 Replies to “How to Perform Linear Interpolation in R (With Example)”

  1. Glad for taking me all through so smoothly. would like to get more of interpolation problems in r programming

Leave a Reply

Your email address will not be published. Required fields are marked *