我对血压记录进行了纵向随访.
与移动平均值(滚动平均值)相比,某一点的值预测性较差,这就是我想计算它的原因.数据看起来像
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
")
我想计算一个新的变量,叫做血压.该变量应为血压的移动平均值,并具有以下特征:
- 移动平均值是当前值加上之前的值除以2.
- 对于第一次观察,更新的血压只是当前的血压.如果是的话
- 缺少的值应使用最接近的前一个值填充.
我试过以下方法:
test2 <- test %>%
group_by(ID) %>%
arrange(ID, YEAR_VISIT) %>%
mutate(BLOOD_PRESSURE_UPDATED = rollmean(x=BLOOD_PRESSURE, 2)) %>%
ungroup()
我也试过rollaply
和rollmeanr
,但都没有成功.