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 1
używając składni dataframe
, która powoduje, że R
zwraca 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