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