R-кадр данных случайным образом назначает категорию по критериям - PullRequest
0 голосов
/ 12 февраля 2019

мой фрейм данных выглядит следующим образом

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

)

...