2

以下のような縦方向のデータフォーマットがあります。「病気」の状態に関する各被験者のインデックスを作成したいと思います。疾患の状態が 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
4

1 に答える 1

2

データがあなたのデータであると仮定して

使用して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 に答える