Пример данных:
df <- data.frame(date = mdy_hm(
c("10/10/2016 10:50",
"10/12/2016 12:07",
"10/24/2016 08:53")),
figure = c(5.73, NA_real_, 6.09))
Использование пакета zoo
:
library(zoo)
library(magrittr)
zoo(df$figure, df$date) %>%
na.approx() %>%
as.data.frame()
Использование lubridate
и dplyr
library(dplyr)
library(lubridate)
df %>%
mutate(figure = ifelse(is.na(figure),
lag(figure, 1) + (lead(figure, 1) - lag(figure, 1)) *
as.numeric(difftime(date, lag(date, 1))) /
as.numeric((difftime(lead(date, 1), date) + difftime(date, lag(date, 1)))),
figure)) %>%
mutate(figure = round(figure, 2))