jak sortować ramkę danych po wielu kolumnach w R

wpis w: Articles | 0

aby zacząć rozumieć, jak prawidłowo sortować ramki danych wR, musimy oczywiście najpierw wygenerować ramkę danych do manipulowania.

Uwaga: odstępy nie są konieczne, ale poprawiają czytelność.,

wykonując nasz skrypt run.R wyświetla listę wektorów w naszej ramce danych zgodnie z oczekiwaniami, w kolejności, w jakiej zostały wprowadzone:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1

funkcja Order

chociaż być może nie jest to najprostsza metoda sortowania do wpisania pod względem składni, jedną z najbardziej dostępnych dla wszystkich instalacji R, ze względu na to, że jest częścią modułu base, jest funkcja order.,

order funkcja przyjmuje wiele argumentów, ale na najprostszym poziomie pierwszy argument musi być ciągiem wartości lub wektorów logicznych.,

na przykład, możemy użyć order() aby po prostu posortować wektor pięciu losowo uporządkowanych liczb za pomocą tego skryptu:

# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector

wykonując skrypt, widzimy początkowe wyjście nieuporządkowanego wektora, a następnie listę teraz uporządkowaną:

$ Rscript run.R 2 5 1 3 4 1 2 3 4 5

sortowanie ramki danych według nazwy wektora

za pomocą funkcji order() w naszym pasku narzędzi zaczniemy sortować naszą ramkę danych, przekazując nazwy wektorów w obrębie ramki danych.,

na przykład, używając naszego wcześniej wygenerowanego obiektu dataframe, możemy sortować według wektora z dodając następujący kod do naszego skryptu:

# Sort by vector name dataframe

Co możemy efektywnie wykonujemy wywołanie naszego oryginalnego obiektudataframe i przekazanie w nowej kolejności indeksów, którą chcielibyśmy mieć., Ta kolejność indeksów jest generowana za pomocą funkcji with(), która skutecznie tworzy nowe środowisko przy użyciu danych przekazanych w pierwszym argumencie wraz z wyrażeniem do oceny tych danych w drugim argumencie.

dlatego przeceniamy danedataframe za pomocą funkcjiorder() i chcemy zamówić na podstawie wektoraz wewnątrz tej ramki danych., Zwraca nową kolejność indeksów dla wartości ramki danych, która jest następnie ostatecznie obliczana w dataframe, wyprowadzając nasz nowy wynik uporządkowany.

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z4 strawberry c 13 banana b 22 orange d 31 apple a 4

w rezultacie widzimy nasze oryginalne, nieuporządkowane wyjście, a następnie drugie wyjście z danymi posortowanymi według kolumny z.

sortowanie według indeksu kolumn

podobnie jak w powyższej metodzie, możliwe jest również sortowanie na podstawie numerycznejindex kolumny w ramce danych, a nie konkretnej nazwy.,

zamiast używać funkcji with(), możemy po prostu przekazać funkcję order()do naszej funkcji dataframe. Wskazujemy, że chcemy sortować według kolumny indeksu 1używając składni dataframe, która powoduje, że Rzwraca poziomy (nazwy) tego indeksu 1 kolumna., Innymi słowy, podobnie jak wtedy, gdy przeszliśmy w z nazwa wektora powyżej, order sortuje na podstawie wartości wektorów znajdujących się w kolumnie indeksu 1:

dataframe ),]

zgodnie z oczekiwaniami, otrzymujemy nasze normalne wyjście, a następnie sortowane wyjście w pierwszej kolumnie:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z1 apple a 43 banana b 22 orange d 34 strawberry c 1

sortowanie według wielu kolumn

w niektórych przypadkach może być pożądane sortowanie według wielu kolumn. Na szczęście jest to bardzo proste przy użyciu wcześniej opisanych metod.,

aby posortować wiele kolumn używając nazw wektorów, po prostu dodaj dodatkowe argumenty do order() wywołanie funkcji jak poprzednio:

# Sort by vector name then dataframe

podobnie, aby sortować według wielu kolumn na podstawie indeksu kolumn, dodaj dodatkowe argumenty doorder()z różnymi indeksami:

# Sort by column index then dataframe, dataframe ),]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *