R:如何在第一列中找到值并在第三列中求和值
R: how to find value in first column and sum value of the third column
我有这样的文件
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
下面的函数可以满足您的需求。它获取年龄范围的起点,然后使用 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")
我有这样的文件
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
下面的函数可以满足您的需求。它获取年龄范围的起点,然后使用 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")