Eu tenho um quadro de dados que contém valores em 4 colunas:
Por exemplo: ID
, price
, click count
,rating
O que eu gostaria de fazer é "dividir" esse quadro de dados em N grupos diferentes, onde cada grupo terá um número igual de linhas com a mesma distribuição de preço, contagem de cliques e atributos de classificação.
Qualquer conselho é muito apreciado, pois não tenho a menor idéia de como lidar com isso!
r
distributions
Rajpal Kulhari
fonte
fonte
Respostas:
Se eu entendi a pergunta corretamente, você obterá o que deseja. Supondo que seu quadro de dados seja chamado
df
e você tenhaN
definido, você pode fazer isso:Isso retornará uma lista de quadros de dados em que cada quadro de dados consiste em linhas selecionadas aleatoriamente
df
. Por padrãosample()
, atribuirá igual probabilidade a cada grupo.fonte
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.frame
e 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:
O
repetitions
argumento 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.fonte
Embora a resposta de Alex A forneça uma probabilidade igual para cada grupo, ela não atende à solicitação da pergunta para que os grupos tenham um número igual de linhas. Em R:
fonte
Isso pode ser resolvido com o aninhamento usando tidyr / dplyr
fonte