data_frame
устарела, поэтому мы заменили его на data.frame
. tibble
будет альтернативой, но включает в себя дополнительную зависимость. Используйте na.approx
в зоопарке и конвертируйте его обратно в класс Date
, так как он выдает числовой вывод c. Это также работает для интерполяции нескольких NA подряд. Это не сработало бы, если бы мы использовали lead
и lag
. Если на концах есть NA, это оставляет их как есть, или мы могли бы использовать другие аргументы для na.approx
, чтобы заполнить их; однако в данных примера нет таких NA, поэтому мы оставляем это, как показано.
(Обратите внимание, что правильная точка на полпути показана ниже, чем в вопросе. Между 2020- 01-01 и 2020-06-22, а также между 2020-06-22 и 2020-12-12.)
library(dplyr)
library(zoo)
df <- data.frame(Date = as.Date(c("2020-01-01", NA, "2020-12-12"))) # test input
mutate(df, Date = as.Date(na.approx(Date, na.rm = FALSE)))
, что дает:
Date
1 2020-01-01
2 2020-06-22
3 2020-12-12