R: Интерполяция NA по группам

Я хотел бы выполнить линейную интерполяцию в переменной кадра данных, которая учитывает: 1) разницу во времени между двумя точками, 2) момент, когда были взяты данные, и 3) индивидуум, взятый для измерения переменной.

Например, в следующем кадре данных:

 df <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
            Individuals=c(1,1,1,1,1,1,1,2,2,2),
            Value=c(1, 2, 3, NA, 5, NA, 7, 5, NA, 7))
  df

Я хотел бы получить:

 result <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
                Individuals=c(1,1,1,1,1,1,1,2,2,2),
                Value=c(1, 2, 3, 4, 5, 6, 7, 5, 5.5, 6))
 result

Я не могу использовать исключительно функциюna.approx пакетаzoo Поскольку все наблюдения не являются последовательными, некоторые наблюдения принадлежат одному человеку, а другие наблюдения принадлежат другим. Причина в том, что если второе лицо будет иметь свое первоеNA и я бы использовал исключительно функциюna.approxЯ буду использовать информацию изindividual==1 интерполироватьNA изindividual==2 (например, следующий кадр данных будет иметь ошибку sucherror)

  df_2 <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
                Individuals=c(1,1,1,1,1,1,1,2,2,2),
                Value=c(1, 2, 3, NA, 5, NA, 7, NA, 5, 7))
  df_2

Я пробовал использовать пакетыzoo а такжеdplyr:

library(dplyr)
library(zoo)
proof <- df %>%
  group_by(Individuals) %>%
  na.approx(df$Value)

Но я не могу выполнитьgroup_by вzoo объект.

Вы знаете, как интерполироватьNA значения в одной переменной по группам?

Заранее спасибо,

Ответы на вопрос(2)

Ваш ответ на вопрос