我的数据框看起来像这样
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)
我需要根据几个条件随机分配类别。就我而言,我需要检查category是否等于premium且合格的等于1。如果是,那么我想在1-4之间随机分配discount_bin。
但是25%的ID必须在discount_bin 1中,在2中为25%-50%,在3中为50%-75%,在4中为75%及以上。另外,如果我添加新数据,如果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_)
)