PROBLEM
我需要从最后一次观察到的值开始,每52周间隔用最后一次观察到的非NA值1来估算NA 's in my data frame that comes from a repeated measures study. On this particular outcome, I need to impute the NA' .
EXAMPLE
包含目标插补目标的示例数据框 .
df <- data.frame(
subject = rep(1:3, each = 12),
week = rep(c(8, 10, 12, 16, 20, 26, 32, 44, 52, 64, 78, 104),3),
value = c(112, 97, 130, 104, NA, NA, NA, NA, NA, NA, NA, NA,
89, 86, 94, 96, 88,107, 110, 102, 107, NA, NA, NA,
107, 110, 102, 130, 104, 88, 82, 79, 92, 106, NA, NA),
goal = c(112, 97, 130, 104, 104, 104, 104, 104, 104, 104, 105, 105,
89, 86, 94, 96, 88,107, 110, 102, 107, 107,107, 108,
107, 110, 102, 130, 104, 88, 82, 79, 92, 106, 106, 106)
)
2 回答
我离开了中间列,使发生的事情变得更加明显,但你可以用一个简单的
select
删除它们 .可以使用
dplyr
和tidyr::fill
来获得所需的结果 . 逻辑将添加一列来跟踪具有non-NA
值的week
. 使用tidyr::fill
填充最后non-NA
值,然后检查当前周与上一个non-NA
周的差异是否大于52
然后将该值增加1
.