У меня есть продольное наблюдение за записями артериального давления.
Значение в определенной точке менее прогностическое, чем скользящее среднее (среднее значение качения), поэтому я хотел бы рассчитать его. Данные выглядят как
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
")
Я хотел бы вычислить новую переменную, называемую BLOOD_PRESSURE_UPDATED. Эта переменная должна быть скользящей средней для BLOOD_PRESSURE и иметь следующие характеристики:
- Скользящее среднее - текущее значение плюс предыдущее значение, деленное на два.
- Для первого наблюдения BLOOD_PRESSURE_UPDATED является только текущим BLOOD_PRESSURE. Если это отсутствует, BLOOD_PRESSURE_UPDATED должно быть общим средним значением.
- Отсутствующие значения должны быть заполнены с ближайшим предыдущим значением.
Я пробовал следующее:
test2 <- test %>%
group_by(ID) %>%
arrange(ID, YEAR_VISIT) %>%
mutate(BLOOD_PRESSURE_UPDATED = rollmean(x=BLOOD_PRESSURE, 2)) %>%
ungroup()
Я также попробовал rollaply и rollmeanr без успеха.
Буду признателен за помощь.