Мы можем использовать sample
для создания случайной выборки chemical
с для каждого product
с использованием group_map
. Это предполагает, что как chemical
s рисуется, так и количество выборок являются случайными:
library(tidyverse)
set.seed(123)
tibble(product) %>%
group_by(product) %>%
group_map(~ tibble(Chemical = sample(chemical, sample(seq_along(chemical)))))
Выход:
# A tibble: 11 x 2
# Groups: product [5]
product Chemical
<chr> <chr>
1 prod_A chemC
2 prod_B chemC
3 prod_B chemB
4 prod_B chemA
5 prod_C chemB
6 prod_C chemA
7 prod_C chemC
8 prod_D chemC
9 prod_E chemC
10 prod_E chemB
11 prod_E chemA
Обратите внимание, что group_map
в настоящее время является экспериментальным, поэтому, пожалуйста, используйте его с осторожностью. Альтернативой могут быть split
, map
и rbind
результаты, что, по сути, и делает group_map
.