使用以下形式的数据,我可以用哪种方式计算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的所有年龄 - 我正在寻找一个上述意义上的书面程序来完成这项工作。
答案 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
如果您继续计算生命值,那么这就是所谓的Mx
或mx
列。