首页 > 解决方案 > 从年龄段生成多个日期

问题描述

当前代码:

在这里,我给出了不同的部分;0-20岁、21-45岁、46-65岁、66-100岁。

dob020 <- seq(today() - years(20), today(), by = "day")
dob2145<- seq(today() - years(45), today() - years(20), by = "day")
dob4665 <- seq(today() - years(65), today() - years(40), by = "day")
dob66100 <- seq(today() - years(100), today() - years(65), by = "day")

在这里,我想根据给定的概率生成随机 DoB。0-20 年的概率必须为 15%,21-45 年的概率为 40% 等。

dateofbirth <-  sample(c(sample(dob020, 1), sample(dob2145, 1), 
sample(dob4665, 1), sample(dob66100, 1)), 10, replace = TRUE, 
prob = c(0.15,0.40, 0.35, 0.10))

这种工作正常,除了现在我得到的结果是 4 个不同的出生日期(每个部分一个),它们分布在 10 个结果中。

我想要的结果是仍然考虑概率的 10 个不同的出生日期。

标签: rdatelubridate

解决方案


您不能sample将它们合二为一,您需要分别对其进行采样,然后将它们组合起来

n <- 100
prob <- c(0.15,0.40, 0.35, 0.10)

c(sample(dob020, n*prob[1]), sample(dob2145, n*prob[2]), 
      sample(dob4665, n*prob[3]), sample(dob66100, n*prob[4]))

推荐阅读