Повний посібник: як використовувати sort(), order() і rank() у r


Три функції R, які люди часто плутають, це сортування , упорядкування та ранжування .

Ось різниця між цими функціями:

  • sort() сортує вектор у порядку зростання
  • order() поверне індекс кожного елемента вектора в відсортованому порядку
  • Rank() призначає ранг кожному елементу вектора (найменший = 1)

У наступному прикладі показано, як використовувати кожну з цих функцій на практиці.

Приклад: використовуйте sort(), order() і Rank() із векторами

У наступному коді показано, як використовувати функції sort() , order() і Rank() із чотиризначним вектором:

 #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

Ось що робила кожна функція:

1. Функція sort() просто відсортувала векторні значення в порядку зростання.

2. Функція order() повернула індекс кожного елемента в порядку сортування.

  • Якщо ви розмістите вихідні значення вектора в порядку на основі цих значень індексу, ви отримаєте відсортований вектор.
  • Наприклад, order() повідомляє нам спочатку розмістити значення в позиції індексу 1 – це 0 у вихідному векторі.
  • Тоді order() повідомляє нам, що потрібно розмістити значення в позиції індексу 3 – це 10 у вихідному векторі.
  • Тоді order() каже нам розмістити значення в позиції індексу 4 – це 15 у вихідному векторі.
  • Тоді order() повідомляє нам, що потрібно розмістити значення в позиції індексу 2 – це 20 у вихідному векторі.
  • Кінцевим результатом є відсортований вектор – 0, 10, 15, 20.

3. Функція Rank() присвоїла ранг кожному елементу вектора, використовуючи 1 для найменшого значення.

  • Наприклад, Rank() повідомляє нам, що перше значення вихідного вектора є найменшим (ранг = 1), а друге значення вихідного вектора є найбільшим (ранг = 4).

Зауважте, що ми можемо використовувати наступний синтаксис для використання sort() , order() і rank() у зворотному порядку:

 #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

Зверніть увагу, що ці результати прямо протилежні результатам, отриманим у попередніх прикладах.

Примітка. Як обробляти зв’язки за допомогою функції Rank().

Ми можемо використовувати аргумент tie.method , щоб вказати, як ми повинні обробляти зв’язки під час використання функції Rank() :

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

Щоб указати, як обробляти посилання, можна скористатися одним із наведених нижче параметрів.

  • середній : (за замовчуванням) призначає кожному пов’язаному елементу середній ранг (елементи на 3-му та 4-му місцях отримають рейтинг 3,5)
  • first : призначає першому пов’язаному елементу найнижчий ранг (елементи, які займають 3-ю та 4-ту позиції, отримають ранги 3 та 4 відповідно)
  • min : призначає кожному пов’язаному елементу найнижчий ранг (елементи, які займають 3-е та 4-е місце, обидва отримають ранг 3)
  • max : призначає кожному пов’язаному елементу найвищий ранг (елементи, які займають 3-е та 4-те місця, отримають ранг 4)
  • random : призначає кожному зв’язаному елементу випадковий ранг (будь-який елемент, рівний на 3-й і 4-й позиції, може отримати будь-який ранг)

Залежно від вашого сценарію один із цих методів може мати більше сенсу використовувати, ніж інші.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в R:

Як сортувати за кількома стовпцями в R
Як відсортувати кадр даних за датою в R
Як розрахувати процентиль рангу в R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *