У меня есть датафрейм, который содержит значения в 4 столбцах:
Например: ID
, price
, click count
,rating
Я хотел бы «разбить» этот фрейм данных на N разных групп, где каждая группа будет иметь одинаковое количество строк с одинаковым распределением цены, количества кликов и атрибутов рейтингов.
Любой совет очень важен, так как я не имею ни малейшего представления о том, как с этим справиться!
r
distributions
Раджпал Кулхари
источник
источник
Ответы:
Если я правильно понимаю вопрос, это даст вам то, что вы хотите. Предполагая, что ваш фрейм данных вызван,
df
и выN
определили, вы можете сделать это:Это вернет список фреймов данных, где каждый фрейм данных состоит из случайно выбранных строк
df
. По умолчаниюsample()
назначит равную вероятность каждой группе.источник
Это очень поздний ответ, но я нашел эту страницу, когда гуглял, обсуждалась ли когда-либо обсуждаемая проблема где-либо. Возможно, мой ответ поможет, если кто-то найдет эту страницу отныне.
Я написал пакет R, который делает именно то, о чем спрашивал вопрос: он принимает
data.frame
и создает N разных групп, пытаясь минимизировать различия между группами по одному или нескольким критериям. Он использует простой метод, основанный на повторном случайном присвоении, который также является предлагаемым методом в утвержденном ответе.Это ссылка на пакет minDiff :
Чтобы решить указанную проблему, вы можете использовать:
repetitions
Аргумент определяет , как часто вы случайным образом создавать различные группы. Лучшее задание - с минимальными различиями между группами - будет возвращено.источник
Хотя ответ Алекса А дает равную вероятность для каждой группы, он не соответствует запросу вопроса о том, чтобы группы имели одинаковое количество строк. В R:
источник
Это можно решить с помощью вложенности, используя tidyr / dplyr
источник