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

问题描述 投票:1回答:1

在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中编码的任何想法?

r
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.