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&nbsp;del paquetezoo&nbsp;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&nbsp;y usaría exclusivamente la funciónna.approx, Estaría usando información delindividual==1&nbsp;para interpolar elNA&nbsp;delindividual==2&nbsp;(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&nbsp;ydplyr:

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

Pero no puedo realizargroup_by&nbsp;en unzoo&nbsp;objeto.

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

Gracias por adelantado,