2

我有一个纵向数据格式,如下所示。我想为每个主题创建一个关于他们的“疾病”状态的索引。如果疾病状态为 NA 或 0,则索引为 0;如果疾病状态为 1,则指数为 1。

但是,我希望同一主题中的每一行都具有相同的索引,而不管它们的状态是什么观察点。说,只要个人有“疾病= 1”而不管哪一行,该个人的所有行的索引都应该是 1。

有人有好主意吗?感谢!

id disease  index
1    NA      0
1    NA      0
1    NA      0
2    NA      1
2     1      1
2     1      1
3    NA      1
3    NA      1
3     1      1
4     1      1
4     0      1
4     0      1
5     0      0
5     0      0
5     0      0
4

1 回答 1

2

假设 dat 是您的数据

使用data.table

require(data.table)
DT <- data.table(dat)

DT[, index := as.numeric(sum(disease >= 1, na.rm=TRUE)>0), by=id]

使用基地R

INDX <- tapply(dat$disease, dat$id, function(x) 
             as.numeric(sum(x >= 1, na.rm=TRUE)>0))

INDX <- data.frame(id=names(INDX), index=INDX)
dat <- merge(dat, INDX)
于 2013-09-25T19:43:03.160 回答