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.