使用滞后变量,按组

时间:2017-02-14 16:26:50

标签: r lag missing-data

我有df看起来像这样,我需要运行代码来生成changechange被定义为第一次获得永久积极outcomeoutcome = 1)。

逻辑如下:

  • 每个ID有5个visits,每个outcome
  • 的值为visit
  • change变量只有1,如果结果为1 x visit x及其后
  • 例如,id 2在change 2时无法time = 1,因为outcome会在time 3恢复为否定结果。< / LI>
  • 额外的皱纹包括缺失的数据。 id 3 visit 3的潜在结果可能是1或0.由于此次访问的值可能为1,因此change应为1。

我的数据包含所需的输出变量

id visit outcome change
1   1     0       0
1   2     0       0
1   3     0       0 
1   4     1       1
1   5     1       0

2   1     0       0
2   2     1       0
2   3     0       0
2   4     1       1
2   5     1       0  

3   1     0       0
3   2     NA      1
3   3     1       1
3   4     1       0
3   5     1       0

1 个答案:

答案 0 :(得分:1)

您可以使用dplyr轻松完成此操作:

library(dplyr)
df <- data.frame(id = rep(c(1,2,3), each = 5), visit = rep(1:5, 3), 
       outcome = c(0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, NA, 1,1,1))
df %>%
group_by(id) %>%
mutate(change = as.numeric(lead(outcome) == 1 & outcome == 1),
       change = ifelse(visit == 5, 0, change),
       change = ifelse(is.na(change), lead(change), change))