【问题标题】:R: how to find value in first column and sum value of the third columnR:如何在第一列中查找值和第三列的总和值
【发布时间】:2019-03-06 09:38:35
【问题描述】:

我有这样的文件

    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】:

    以下功能可以满足您的需求。它获取年龄范围的开始,然后使用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")
    

    【讨论】:

      猜你喜欢
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多