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