Это очень поздний ответ, но я нашел эту страницу, когда гуглял, обсуждалась ли когда-либо обсуждаемая проблема где-либо. Возможно, мой ответ поможет, если кто-то найдет эту страницу отныне.
Я написал пакет R, который делает именно то, о чем спрашивал вопрос: он принимает data.frame
и создает N разных групп, пытаясь минимизировать различия между группами по одному или нескольким критериям. Он использует простой метод, основанный на повторном случайном присвоении, который также является предлагаемым методом в утвержденном ответе.
Это ссылка на пакет minDiff :
Чтобы решить указанную проблему, вы можете использовать:
library(minDiff)
assigment <- create_groups(dataframe, criteria_scale = c("price", "click count", "rating"), sets_n = N, repetitions = 1000)
repetitions
Аргумент определяет , как часто вы случайным образом создавать различные группы. Лучшее задание - с минимальными различиями между группами - будет возвращено.