Essa é uma resposta muito tardia, mas encontrei esta página pesquisando se o problema, conforme indicado, já foi discutido em qualquer lugar. Talvez minha resposta ajude se alguém encontrar esta página a partir de agora.
Escrevi um pacote R, que faz exatamente o que a pergunta solicita: é preciso data.framee cria N grupos diferentes enquanto tenta minimizar as diferenças entre os grupos em um ou vários critérios. Ele usa um método simples baseado em atribuição aleatória repetida , que também é o método sugerido na resposta aprovada.
Este é o link para o pacote minDiff :
Para resolver o problema declarado, você pode usar:
library(minDiff)
assigment <- create_groups(dataframe, criteria_scale = c("price", "click count", "rating"), sets_n = N, repetitions = 1000)
O repetitionsargumento determinará com que frequência você cria aleatoriamente diferentes grupos. A melhor tarefa - a que tiver diferenças mínimas entre os grupos - será retornada.