R:如何在第一列中找到值并在第三列中找到总和值

问题描述 投票:0回答:1

我有这样的文件

    Age.Range            Average  Probability
1    0 to 04               400     0.00400
2   05 to 09               221     0.00221
3   10 to 14               216     0.00216
4   15 to 19               409     0.00409

X [个人年龄; 0到80年之间的整数]

Y [监测个人的持续时间; 1到50年之间的整数或“终身”]

我需要计算年龄为X(例如3)的人在从今天开始到Y(从7开始)的间隔期间患上癌症的概率。在R中,我需要在第一列中找到X的值和X + Y的值,并将这两个范围之间的第三列中的所有值相加:

X= 3
x+y=10
probability= 0.004 + 0.00221 + 0.00216
r probability
1个回答
1
投票

以下功能可以满足您的需求。它获取年龄范围的开始,然后使用findInterval查找概率列中的索引。然后是添加这些概率的问题。

sumProbs <- function(DF, X, Y){
  DF[["Age.Range"]] <- as.character(DF[["Age.Range"]])
  Age.Start <- strsplit(DF[["Age.Range"]], " to ")
  Age.Start <- as.integer(sapply(Age.Start, '[[', 1))
  i <- findInterval(c(X, X + Y), Age.Start)
  p <- DF[["Probability"]][i[1]:i[2]]
  sum(p)
}

sumProbs(df1, 3, 7)
#[1] 0.00837

dput格式的数据。

df1 <-
structure(list(Age.Range = c("0 to 04", "05 to 09", 
"10 to 14", "15 to 19"), Average = c(400L, 221L, 
216L, 409L), Probability = c(0.004, 0.00221, 0.00216, 
0.00409)), row.names = c("1", "2", "3", "4"), 
class = "data.frame")
© www.soinside.com 2019 - 2024. All rights reserved.