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

标签 r

我有如下所示的纵向数据格式。我想为每个受试者创建一个关于其“疾病”状态的索引。如果疾病状态为 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

最佳答案

假设 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)

关于r - 如何在纵向数据中创建行/主题索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013457/

相关文章:

r - R中的一维数据帧到二维格式

r - 为什么不能在 sapply 中使用 -qnorm?

r - 解释 SARIMA 模型的 ACF 和 PACF 图

r - 在马赛克图下方显示轴标签

r - ggplot2 在 R 3.0.2 上安装失败

r - 用 R 下载 png/jpg

r - 关于 GForce 在 data.table 1.9.2

r - 如何合并 R 中的两个日期向量?

r - 计算以字符串形式给出的表达式

r - rStudio中的TODO注释