如何在纵向数据中创建行/主题索引

时间:2013-09-25 19:23:40

标签: r

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

但是,我希望同一主题中的每一行都具有相同的索引,忽略它们的状态是什么观察点。比方说,只要个人的'disease = 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

1 个答案:

答案 0 :(得分:2)

假设dat是您的数据

使用data.table

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

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

使用Base 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)