Dplyr даунсэмплинг в конвейере

У меня есть такая табличка:

tibble(a = c(1,2,3,4,5), b = c(1,1,1,2,2))

Я хочу случайным образом уменьшить данные по столбцу "b", например:

tibble(a = c(1,3,4,5), b = c(1,1,2,2))

Как я могу сделать это полностью в конвейере Dplyr, не меняя тип данных таблицы?


person Christopher Costello    schedule 13.04.2018    source источник


Ответы (1)


При этом получается наименьший размер группы (сгруппированный по b) и выборка такого количества элементов из каждой группы. Непонятно, этого ли ты хотел.

Если ваша табличка называется df

df %>% 
  group_by(b) %>% 
  add_count %>% 
  slice(sample(row_number(), min(.$n))) %>% 
  select(-n)
person IceCreamToucan    schedule 13.04.2018
comment
Это намного лучше моего. Я удалил его, потому что условия ОП не очень ясны. - person akrun; 13.04.2018