R数据框按条件随机分配类别

时间:2019-02-11 22:42:36

标签: r random-seed

我的数据框看起来像这样

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_)

0 个答案:

没有答案