линейная интерполяция по r: заменить NA в одном столбце на основе данных из другого столбца - PullRequest
0 голосов
/ 20 октября 2019

У меня есть две переменные здесь (x и y). Мне нужно заменить NA в y, основываясь на x и y, используя линейную интерполяцию.

Пример данных:

df <- data.frame(x = c(1,1.15,1.20,1.75,1.83,1.86,1.95),y = c(50,NA,30,NA,NA,NA,20))

Желаемыйвывод:

df2 <- data.frame(x = c(1,1.15,1.20,1.75,1.83,1.86,1.95),y = c(50,35,30,22.67,21.6,21.2,20))

Я пытался написать цикл for, чтобы сделать это, но я не могу. Я также попробовал некоторые существующие функции, например прибл ... но они не подходят для моей цели. Они всегда интерполируют значение y, основываясь только на заданных значениях y.

Ваша помощь будет очень важна и высоко ценится. Спасибо.

1 Ответ

0 голосов
/ 20 октября 2019

Использование na.approx

library(zoo)
transform(df, y = na.approx(y, x))

Если вместо фреймов данных использовать серии зоопарков, то это еще проще.

z <- read.zoo(df)
na.approx(z)
...