У меня большой набор данных, и у меня есть несколько групп, которые я хочу выбрать. В каждой группе есть определенное количество положительных случаев со значением 1 и намного больше отрицательных случаев со значением нуля.
Для каждой группы я хочу выбрать все положительные случаи, а затем случайное количество отрицательных случаев, равное 4-кратному количеству положительных случаев в этой группе.
Мне также нужно что-то, что быстро работает с большим количеством данных.
Полу-обновление:
stratified_sample = data %>%
group_by(group) %>%
mutate(n_pos = sum(response == 1),
n_neg = 4 * n_pos) %>%
group_by(group,response) %>%
mutate(rec_num = n(),
random_val = runif(n()),
random_order = rank(random_val)) %>%
filter(response == 1 | random_order <= n_neg)