Media móvil (promedio móvil) por grupo /, id con dplyr

Tengo un seguimiento longitudinal de los registros de presión arterial.

El valor en cierto punto es menos predictivo que el promedio móvil (media móvil), por lo que me gustaría calcularlo. Los datos se ven como

test <- read.table(header=TRUE, text = "
  ID  AGE   YEAR_VISIT  BLOOD_PRESSURE  TREATMENT
  1 20  2000    NA 3
  1 21  2001    129 2
  1 22  2002    145 3
  1 22  2002    130 2
  2 23  2003    NA  NA
  2 30  2010    150 2
  2 31  2011    110 3
  4 50  2005    140 3
  4 50  2005    130 3
  4 50  2005    NA  3
  4 51  2006    312 2
  5 27  2010    140 4
  5 28  2011    170 4
  5 29  2012    160 NA
  7 40  2007    120 NA
                   ")

Me gustaría calcular una nueva variable, llamada BLOOD_PRESSURE_UPDATED. Esta variable debe ser el promedio móvil de BLOOD_PRESSURE y tener las siguientes características:

Un promedio móvil es el valor actual más el valor anterior dividido por dos.Para la primera observación, BLOOD_PRESSURE_UPDATED es solo la BLOOD_PRESSURE actual. Si eso falta, BLOOD_PRESSURE_UPDATED debería ser la media general.Los valores faltantes se deben completar con el valor anterior más cercano.

He intentado lo siguiente:

test2 <- test %>%
  group_by(ID) %>%
  arrange(ID, YEAR_VISIT) %>%
  mutate(BLOOD_PRESSURE_UPDATED = rollmean(x=BLOOD_PRESSURE, 2)) %>%
ungroup()

También he intentado rollaply y rollmeanr sin tener éxito.

Agradecería un poco de ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta