1

使用以下形式的数据,我可以通过哪些方式计算 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 都存在——我正在寻找一个上述意义上的书面程序来完成这项工作。

4

2 回答 2

0

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

tapply(data$death, data$age, mean)
于 2013-05-17T19:23:45.393 回答
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

如果再继续计算一个lifetable,这就是所谓的Mxormx列。

于 2013-12-17T17:47:09.523 回答