如何计算R中的(特定年龄)死亡率?

时间:2013-05-17 15:33:26

标签: r

使用以下形式的数据,我可以用哪种方式计算R编程语言中的(特定年龄)死亡率?

head(data)
##   age gender zone   Class       misc      bonus duration  death cost
## 1   0      M    1       4         12          1   0.1753      0    0
## 2   4      M    3       6          9          1   0.0000      1    0
## 3   5      F    3       3         18          1   0.4548      0    0
## 4   5      F    4       1         25          1   0.1726      0    0
## 5   6      F    2       1         26          1   0.1808      0    0
## 6   9      F    3       3          8          1   0.5425      0    0

也就是说,对于每个年龄,我想计算死亡人数并除以该特定年龄的暴露个体总数。我尝试了以下方法:

n <- length(data$age);
    rate <- c(1:n); 
    for (i in 1:n){
    rate[i] <- sum(subset(data, age == i)$death)/ length(subset(data, age == i))
}

但这没用 - 显然数据集中不存在从1到n的所有年龄 - 我正在寻找一个上述意义上的书面程序来完成这项工作。

2 个答案:

答案 0 :(得分:0)

因为变量death只取值为零或一,所以您可以在一行代码中计算特定年龄的死亡率。

tapply(data$death, data$age, mean)

答案 1 :(得分:0)

您可以使用table()获取大部分内容。如果我们假设所有那些没有死亡的人在100%的时间内存在(比如说一年),并且那些死亡的人在1/2的时间内存在,那么我们就有足够的信息来计算这些数据的暴露。我不确定您的duration列是什么,但您还没有真正描述过这些数据。

# cheap version of your data:
DF <- data.frame(age = c(0,4,5,5,6,9), death = c(0,1,0,0,0,0))

(DAT      <- table(DF$death,DF$age))
    0 4 5 6 9
  0 1 0 2 1 1
  1 0 1 0 0 0
# weight these two rows for components of exposure:
Exposure <- colSums(DAT * c(1,.5))
# rates are the ratio of death counts in each age to exposure to risk in each age:
Rates <- DAT["1",] / Exposure

如果您继续计算生命值,那么这就是所谓的Mxmx列。