R: Interpolação de NAs por grupo

Eu gostaria de realizar uma interpolação linear em uma variável de um quadro de dados que leve em consideração a: 1) diferença de tempo entre os dois pontos, 2) o momento em que os dados foram coletados e 3) o indivíduo levado para medir a variável.

Por exemplo, no próximo quadro de dados:

 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

Eu gostaria de obter:

 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

Não posso usar exclusivamente a funçãona.approx do pacotezoo porque todas as observações não são consecutivas, algumas pertencem a um indivíduo e outras pertencem a outros. A razão é porque, se o segundo indivíduo tiver sua primeira obsrevação comNA e eu usaria exclusivamente a funçãona.approx, Eu estaria usando informações doindividual==1 para interpolar oNA doindividual==2 (por exemplo, o próximo quadro de dados teria esse erro)

  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

Eu tentei usar os pacoteszoo edplyr:

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

Mas eu não posso realizargroup_by em umzoo objeto.

Você sabe como interpolarNA valores em uma variável por grupos?

Desde já, obrigado,

questionAnswers(2)

yourAnswerToTheQuestion