Генерация нескольких дат из возрастных сегментов - PullRequest
0 голосов
/ 12 декабря 2018

Текущий код:

Здесь я даю различные сегменты;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 различных дат рождения, которые все еще учитывают вероятность.

1 Ответ

0 голосов
/ 12 декабря 2018

Вы не можете сделать это за один 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]))
...