мой фрейм данных выглядит следующим образом
df <- read.table(text="
id category eligible
1 124 premium 1
2 1353 premium 0
3 532 regular 1
4 631 premium 1
5 531 premium 1
", header=TRUE)
Мне нужно случайным образом назначить категорию по нескольким критериям.В моем случае мне нужно проверить, равна ли категория премиуму и соответствует ли право 1. Если да, то я бы хотел назначить случайным образом назначить discount_bin между 1-4.
Но 25% идентификаторов должныбыть в discount_bin 1, 25% - 50% в 2, 50% - 75% в 3, 75% и выше в 4. И еще, если я добавлю новые данные, если 124 было однажды в discount_bin 1, оно всегда должно бытьв том же контейнере.
Я пытался создать приведенный ниже код, но он не работает.
set.seed(5)
df %>% mutate(
discount_bin = case_when(
category == "premium" & eligible== 1 ~
as.integer(
cut(runif(id),
breaks = c(0, quantile(
x = runif(id),
probs = c(0.25, 0.50, 0.75),
na.rm = T),
1))),
T ~ NA_integer_)
)