在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中编码的任何想法?
我们可以在'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))