I have the following lookup table:
lkp <- data.frame(
x=c(0,0.2,0.65,0.658,1.3,1.76,2.7),
y=c(1,1,1,0.942,0.942, 0.92, 0.89)
)
I would like to get the value of Y of a given X value.
If the X value exists in the table then the exact Y of the table should be returned. If the X value does not exist, then the Y value should be returned as linear interpolation of the 2 nearest neighbors (only the 2 nearest neighbors). I would not like to fit a model to the overall data.
for the above table
for X=0.2 Y=1 (exact lookup)
for X=2 Y=0.91 (linear interpolation between the last 2 rows of the data frame)
Is there any ready function to do this?
I do not think there is a ready function for this, but you could build one quite easily. E.g.:
A function for getting "neighbourgs" (the name is a bit misleading, but the function works):
It will return the exact "ID" if a value is found in
vector
, otherways it will return two "IDs" (two smaller values before that). It requires that your data is ordered! If not, you have to tweak it a bit. Examples of usage:Using this, a simple function can be built to get the mean of required
y
values, like:Examples:
Hope that helps.
Yes, it's called
approx
.See
?approx
for more information.