interpolação linear com dplyr, mas pulando grupos com todos os valores ausentes
Eu estou tentando interpolar linearmente valores dentro de um grupo usando dplyr e approx () Infelizmente, alguns dos grupos têm todos os valores ausentes, então eu gostaria que a aproximação simplesmente pulasse esses grupos e prosseguisse pelo restante. Não quero extrapolar ou usar os dados da observação vizinha mais próxima.
Aqui está um exemplo dos dados. O primeiro grupo (por identificação) está ausente, o outro deve ser interpolado.
data <- read.csv(text="
id,year,value
c1,1998,NA
c1,1999,NA
c1,2000,NA
c1,2001,NA
c2,1998,14
c2,1999,NA
c2,2000,NA
c2,2001,18")
dataIpol <- data %>%
group_by(id) %>%
arrange(id, year) %>%
mutate(valueIpol = approx(year, value, year,
method = "linear", rule = 1, f = 0, ties = mean)$y)
Mas então eu recebo o erro
Error: need at least two non-NA values to interpolate
Não recebo esse erro se me livrar dos grupos que faltam, mas isso não é viável.