Kompletny przewodnik: jak używać funkcji sort(), order() i rank() w języku r


Trzy funkcje języka R, które ludzie często mylą, to sortowanie , porządkowanie i rankingowanie .

Oto różnica między tymi funkcjami:

  • sort() posortuje wektor w kolejności rosnącej
  • Order() zwróci indeks każdego elementu wektora w posortowanej kolejności
  • Rank() przypisze rangę do każdego elementu wektora (najmniejszy = 1)

Poniższy przykład pokazuje, jak w praktyce wykorzystać każdą z tych funkcji.

Przykład: użyj sort(), Order() i Rank() z wektorami

Poniższy kod pokazuje, jak używać funkcji sort() , Order() i Rank() z wektorem czterowartościowym:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector
sort(s)

[1] 0 10 15 20

#order vector
order(s)

[1] 1 3 4 2

#rank vector
rank(x)

[1] 1 4 2 3

Oto, co zrobiła każda funkcja:

1. Funkcja sort() po prostu posortowała wartości wektorów w kolejności rosnącej.

2. Funkcja Order() zwróciła indeks każdego elementu w posortowanej kolejności.

  • Jeśli uporządkujesz oryginalne wartości wektorów w oparciu o te wartości indeksów, otrzymasz posortowany wektor.
  • Na przykład funkcja Order() każe nam najpierw umieścić wartość na pozycji indeksu 1 – w oryginalnym wektorze jest to 0.
  • Następnie funkcja Order() każe nam umieścić wartość na pozycji indeksu 3 – czyli 10 w oryginalnym wektorze.
  • Następnie funkcja Order() każe nam umieścić wartość na pozycji indeksu 4 – czyli 15 w oryginalnym wektorze.
  • Następnie funkcja Order() każe nam umieścić wartość na pozycji indeksu 2 – czyli 20 w oryginalnym wektorze.
  • Efektem końcowym jest posortowany wektor – 0, 10, 15, 20.

3. Funkcja Rank() przypisała rangę każdemu elementowi wektora, używając 1 dla najmniejszej wartości.

  • Na przykład funkcja Rank() mówi nam, że pierwsza wartość pierwotnego wektora jest najmniejsza (ranga = 1), a druga wartość pierwotnego wektora jest największa (ranga = 4).

Zauważ, że możemy użyć następującej składni, aby użyć sort() , Order() i rank() w odwrotnej kolejności:

 #createvector
x <- c(0, 20, 10, 15)

#sort vector in decreasing order
sort(x, decreasing= TRUE )

[1] 20 15 10 0

#order vector in decreasing order
order(x, decreasing= TRUE )

[1] 2 4 3 1

#rank vector in reverse order (largest value = 1)
rank(-x)

[1] 4 1 3 2

Należy zauważyć, że wyniki te są dokładnie przeciwne do uzyskanych w poprzednich przykładach.

Uwaga: Jak radzić sobie z powiązaniami za pomocą funkcji Rank().

Możemy użyć argumentu tie.method , aby określić, jak powinniśmy postępować z remisami podczas korzystania z funkcji Rank() :

 rank(x, ties. method = ' average ')

Aby określić sposób obsługi łączy, możesz użyć jednej z następujących opcji:

  • średnia : (domyślnie) Przypisuje każdemu połączonemu elementowi średnią rangę (obiekty zajmujące 3. i 4. miejsce otrzymają ocenę 3,5)
  • pierwszy : przypisuje pierwszy połączony element do najniższej rangi (elementy zajmujące pozycje 3 i 4 otrzymają odpowiednio rangi 3 i 4)
  • min : Przypisuje każdemu połączonemu przedmiotowi najniższą rangę (obiekty o randze 3 i 4 otrzymają rangę 3)
  • max : Przypisuje każdemu połączonemu przedmiotowi najwyższą rangę (obiekty o randze 3 i 4 otrzymają rangę 4)
  • losowy : przypisuje każdemu remisującemu elementowi losową rangę (każdy element remisujący na 3. i 4. miejscu może otrzymać dowolną rangę)

W zależności od scenariusza użycie jednej z tych metod może być bardziej sensowne niż pozostałych.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w języku R:

Jak sortować według wielu kolumn w R
Jak posortować ramkę danych według daty w R
Jak obliczyć rangę percentylową w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *