从“事件事件”变量创建“永远事件”变量

时间:2018-03-03 12:08:51

标签: r

在R中,在重复测量数据集中,如何根据事件变量为个体的每个测量创建一个相同的变量?例如,如果我有:

id incident_MI
1 0
1 0
1 1
2 0
2 0
2 0
3 0
3 0
3 0
3 1

我想使用incident_MI创建一个ever_MI变量,如下所示:

id incident_MI Ever_MI
1 0 1
1 0 1
1 1 1
2 0 0
2 0 0
2 0 0
3 0 1
3 0 1
3 0 1
3 1 1

关于我如何在R中编码的任何想法?

1 个答案:

答案 0 :(得分:1)

我们可以在按'id'分组后检查'incident_MI'中的any 1并使用as.integer将其转换为'numeric'以创建'Ever_MI'

library(dplyr)
df1 %>%
   group_by(id) %>%
   mutate(Ever_MI = as.integer(any(incident_MI==1)))
# A tibble: 10 x 3
# Groups: id [3]
#      id incident_MI Ever_MI
#   <int>       <int>   <int>
# 1     1           0       1
# 2     1           0       1
# 3     1           1       1
# 4     2           0       0
# 5     2           0       0
# 6     2           0       0
# 7     3           0       1
# 8     3           0       1
# 9     3           0       1
#10     3           1       1

或者@lmo评论时,data.table选项将是

library(data.table)
setDT(df1)[, Ever_MI := any(incident_MI), by=.(id)][]

或使用base R

df1$Ever_MI <- with(df1, ave(incident_MI, id, FUN = any))
相关问题