Следующая функция делает то, что вы хотите.Он получает начало возрастных диапазонов и затем использует 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")