R: Interpolación de NA por grupo

Me gustaría realizar una interpolación lineal en una variable de un marco de datos que tenga en cuenta la: 1) diferencia de tiempo entre los dos puntos, 2) el momento en que se tomaron los datos y 3) el individuo tomado para medir la variable.

Por ejemplo, en el siguiente marco de datos:

 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

Me gustaría obtener:

 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

No puedo usar exclusivamente la funciónna.approx del paquetezoo como todas las observaciones no son consecutivas, algunas observaciones pertenecen a un individuo y otras observaciones pertenecen a otros. La razón es porque si el segundo individuo tuviera su primera obsesión conNA y usaría exclusivamente la funciónna.approx, Estaría usando información delindividual==1 para interpolar elNA delindividual==2 (por ejemplo, el siguiente marco de datos tendría éxito)

  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

He intentado usar los paqueteszoo ydplyr:

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

Pero no puedo realizargroup_by en unzoo objeto.

¿Sabes cómo interpolar?NA valores en una variable por grupos?

Gracias por adelantado,

Respuestas a la pregunta(2)

Su respuesta a la pregunta