Исходя из двух фреймов данных с одинаковым количеством строк, используя dplyr, я бы сделал это:
inner_join(
mutate(groups, rand = sample(n())),
mutate(tasks, rand = sample(n())),
by = "rand"
) %>%
select(-rand)
Это будет случайным образом сопоставлять каждую строку из groups
с каждой строкой из tasks
, но при этом будет включена каждая группа и каждая задача. Это будет обобщать просто отлично, если у вас есть больше столбцов в любом фрейме данных. Предполагается, что у вас одинаковое количество строк в каждой --- если нет, будут включены все строки из меньшего фрейма данных и случайная подвыборка строк из большего фрейма данных.
Если вы хотите что-то еще, пожалуйста, уточните характеристики вашего случайного процесса.