Mam ramkę danych, która zawiera wartości w 4 kolumnach:
Na przykład: ID
, price
, click count
,rating
Chciałbym „podzielić” tę ramkę danych na N różnych grup, w których każda grupa będzie miała taką samą liczbę wierszy z takim samym rozkładem ceny, liczby kliknięć i atrybutów ocen.
Wszelkie porady są mile widziane, ponieważ nie mam najmniejszego pojęcia, jak sobie z tym poradzić!
r
distributions
Rajpal Kulhari
źródło
źródło
Odpowiedzi:
Jeśli dobrze zrozumiem pytanie, uzyskasz to, czego chcesz. Zakładając, że twoja ramka danych jest wywoływana
df
i maszN
zdefiniowane, możesz to zrobić:Zwróci to listę ramek danych, z których każda ramka danych składa się z losowo wybranych wierszy
df
. Domyślniesample()
przypisze równe prawdopodobieństwo każdej grupie.źródło
To jest bardzo późna odpowiedź, ale znalazłem tę stronę podczas przeglądania google, czy opisany problem kiedykolwiek był omawiany. Może moja odpowiedź pomoże, jeśli ktoś znajdzie tę stronę od teraz.
Napisałem pakiet R, który robi dokładnie to, o co pytano: bierze a
data.frame
i tworzy N różnych grup, próbując zminimalizować różnice między grupami w jednym lub kilku kryteriach. Wykorzystuje prostą metodę opartą na wielokrotnym losowym przypisywaniu, która jest również sugerowaną metodą w zatwierdzonej odpowiedzi.To jest link do pakietu minDiff :
Aby rozwiązać opisany problem, możesz użyć:
repetitions
Argumentem będzie określić, jak często losowo tworzyć różne grupy. Najlepsze zadanie - to, które ma minimalne różnice między grupami - zostanie zwrócone.źródło
Chociaż odpowiedź Alexa A daje równe prawdopodobieństwo dla każdej grupy, nie spełnia ona żądania pytania, aby grupy miały taką samą liczbę wierszy. W R:
źródło
Można to rozwiązać za pomocą zagnieżdżania za pomocą tidyr / dplyr
źródło