J'ai un cadre de données qui contient des valeurs sur 4 colonnes:
Par exemple: ID
, price
, click count
,rating
Ce que je voudrais faire, c'est "diviser" cette trame de données en N groupes différents où chaque groupe aura un nombre égal de lignes avec la même distribution de prix, le nombre de clics et les attributs de notes.
Tout conseil est fortement apprécié, car je n'ai pas la moindre idée de la façon de résoudre ce problème!
r
distributions
Rajpal Kulhari
la source
la source
Réponses:
Si je comprends bien la question, cela vous donnera ce que vous voulez. En supposant que votre bloc de données est appelé
df
et que vous l'avezN
défini, vous pouvez le faire:Cela renverra une liste de trames de données où chaque trame de données se compose de lignes sélectionnées au hasard à partir de
df
. Par défautsample()
, une probabilité égale sera attribuée à chaque groupe.la source
Ceci est une réponse très tardive, mais j'ai trouvé cette page en cherchant sur Google si le problème tel qu'énoncé a déjà été discuté n'importe où. Peut-être que ma réponse vous aidera si quelqu'un trouve cette page à partir de maintenant.
J'ai écrit un package R, qui fait exactement ce que la question demandait: il prend un
data.frame
et crée N groupes différents tout en essayant de minimiser les différences entre les groupes dans un ou plusieurs critères. Il utilise une méthode simple basée sur l'assignation aléatoire répétée , qui est également la méthode suggérée dans la réponse approuvée.Voici le lien vers le package minDiff :
Pour résoudre le problème déclaré, vous pouvez utiliser:
L'
repetitions
argument déterminera la fréquence à laquelle vous créez aléatoirement différents groupes. La meilleure affectation - celle qui présente le moins de différences entre les groupes - sera renvoyée.la source
Bien que la réponse d'Alex A donne une probabilité égale pour chaque groupe, elle ne répond pas à la demande de la question pour les groupes d'avoir un nombre égal de lignes. Dans R:
la source
Cela peut être résolu par l'imbrication à l'aide de tidyr / dplyr
la source