Мы можем сделать группу путем интерполяции
library(dplyr)
library(forecast)
df1 %>%
group_by(state) %>%
mutate_at(vars(-group_cols()), list(interp= ~ na.interp(.)))
Если столбцы не все числовые c, используйте mutate_if(is.numeric, list(interp= ~ na.interp(.)))