Вступ до сортування в R

Сортування є одним із найважливіших аспектів аналізу даних. Це техніка, в якій дані впорядковуються або відокремлюються в певному порядку. Дані сортуються з метою отримання необхідної інформації з набору даних. Наприклад, упорядкувавши дані у порядку зростання на основі ключа дати, тут були визначені критерії для сортування. Цю операцію можна легко виконати за допомогою мови R. У мові R є кілька функцій сортування, таких як сортування бульбашок та сортування вибору. У цій статті ми побачимо важливість різних функцій сортування та пояснимо кожну з них на прикладах.

Сортування, проведене в R

Існує кілька способів, за допомогою яких можна впорядкувати дані в Р. Аналітик даних повинен розглянути найбільш підходящий метод, заснований на структурі даних. Мова R має кілька функцій та способів сортування даних, таких як сортування (), порядок () та пакет dplyrI ().

Що потрібно пам’ятати перед сортуванням даних.

  1. Порядок, в якому дані потрібно сортувати за зростанням чи убуванням.
  2. Критерії сортування кількох стовпців.
  3. Облік відсутніх та дублюючих значень під час сортування. Аналітик повинен вирішити, що потрібно зробити з відсутніми та дублюючими значеннями. Перед видаленням або заміною нульових значень слід врахувати загальний вплив на дані.

Функція сортування () в R

Функція сортування в R використовується для сортування вектора. За замовчуванням значення впорядковується у порядку зростання. Візьмемо приклад стовпчика позначки всіх учнів на уроці.

Синтаксис для сортування вектора є

“sort (x, decreasing = FALSE)”

Тут х посилається на вектор, і зменшення має бути замінено на ІСТИНА, коли сортування має здійснюватися у порядку зменшення. Функція сортування використовується для упорядкування числового чи символьного вектора в потрібному порядку. Основне обмеження функції сортування полягає в тому, що вона не може бути використана для сортування кадру даних. Для подолання цього обмеження використовується функція Order ().

Основний приклад сортування за допомогою функції sort ()

set.seed(1)
x <- sample(1:100, 10)
x

Вихід
(1) 68 39 1 34 87 43 14 82 59 51

сортувати (х)

Вихід

(1) 1 14 34 39 43 51 59 68 82 87

Сортування кадрів даних може бути здійснено за допомогою функції order (). Змінні можуть бути легко відсортовані у порядку зростання або зменшення, однак функція порядку сортуватиме змінну за зростанням за замовчуванням.

> df <- data.frame("Serial_number" = 1:5, "Age" = c(20, 21, 17, 18, 19), "Name" = c("Johnny", "Dorian", "Linda", "Cathy", "Rick"))
>
> # Sort by age ascending order
> newdataAsc newdataAsc

# sorting is descending order
> newdataDsc> newdataDsc newdataAsc

Зверніть увагу, що негативний знак використовується перед стовпцем "Вік" (-df $ Age), щоб сортувати Вік у порядку зменшення. Як альтернатива, аргумент, що спадає, може використовуватися в цій позиції. Функція Порядок використовується для позначення індексу стовпців, а не до назви стовпця. Наприклад, замість віку посилання на індекс кадру даних, яке було б "1". Пам’ятаючи, що значення індексу починаються з «0».

У кількох випадках нам може знадобитися сортувати дані за кількома критеріями, цього можна досягти в R за допомогою використання змінних імен або індексних чисел. У наведеному нижче прикладі я використав набір даних mtcars, який доступний у студії R.

df <- mtcars
> df
> # sort the dataframe by key disp
> df(with(df, order(mpg, disp)), )

> # Sort by column index values
> df(order( df(, 1), df(, 3) ), )

У R альтернативний спосіб сортування даних здійснюється за допомогою пакету dplyr. Цей пакет дуже простий у використанні та надійний з наявними точними інструкціями.

> install.packages("dplyr")
> library(dplyr)
> df <- mtcars
>
> # sort the dataframe by key disp
> arrange(mydata, disp)

Види сортування в R

R оснащений декількома алгоритмами для сортування даних. Нижче наведено різні типи функції сортування. Для ілюстрації різних типів сортування використовується вибірка з 10 випадкових чисел з масиву.

1. Сортування бульбашок

У цьому алгоритмі два значення порівнюються поряд і елементи змінюють своє положення, коли критерії виконуються. Це може бути як висхідний, так і у порядку зменшення. У бульбашках сортуються пари для елементів, доступних у змінній, і елементи порівнюються один з одним, коли один елемент більший, ніж інший, вони поміняються місцями. Процес повторюється до останнього елемента.

> bubble_sort <- function (x, ascending = TRUE) (
+ n <- length(x)
+ if (ascending) (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) < x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ else (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) > x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ x
+ )
>
> x <-sample(1:100, 10)
> example <- bubble_sort(x)
> example

Вихід

2. Сортування вставки

У алгоритмі сортування вставки порівнюються сортовані та несортовані елементи, а несортований елемент розміщується у відповідному місці після кожної ітерації.

У цьому алгоритмі перший елемент вважається сортованим, а другий зберігається окремо як ключовий елемент. Потім відсортований елемент порівнюється з ключем. Якщо відсортований елемент більший за ключовий елемент, місця міняються місцями, а ключовий елемент є першим.

> insertion_sort <- function(A)(
+ for (j in 2:length(A)) (
+ key = A(j) + i = j - 1
+ while (i > 0 && A(i) > key) (
+ A((i + 1)) = A(i) + i = i - 1
+ )
+ A((i + 1)) = key
+ )
+ A
+ )
>
>
> # testing the insertion function
> x <-sample(1:100, 10)
> example <- insertion_sort(x)
> example

Вихід

3. Сортування вибору

Функція сортування відбору - широко використовуваний алгоритм сортування, що використовується в мові R. У цьому виді сортування найменший елемент із несортованого списку висувається на початок списку. В алгоритмі сортування вибору найменший елемент із масиву несортованого списку вибирається та розміщується на початку несортованого списку при кожній ітерації. Наприклад, у ряді чисел, розташованих у випадковій послідовності, початковий елемент або число вибирається як мінімум. На наступному кроці вибране мінімальне число порівнюється із наступним елементом або числом. У випадку, якщо порівняний елемент менший, ніж обраний нами мінімум, другий елемент стає мінімальним. Цей процес повторюється до останнього елемента.

> selection_sort <- function (x, ascending = TRUE) (
+ max <- length(x)
+ if (ascending) (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) < m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending if
+ else (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) > m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending else
+ x
+ )
>
>
> # testing the selectionsort function
> x <-sample(1:100, 10)
>
> example <- selection_sort(x)
> example

Вихід

4. Швидкий сортування

Алгоритм Quicksort працює як поділ і правило. Випадковий елемент вибирається у вигляді масиву в масиві, а потім всі інші елементи, крім зведеного, діляться на два розділи. На наступному кроці всі елементи, менші та більші за шарнір, поділяються на дві різні перегородки. Нарешті, елементи сортуються за допомогою рекурсії.

> # Quick sort algorithm:
> quickSort <- function(arr) (
+ # Pick a number at random.
+ mid <- sample(arr, 1)
+
+ # Place-holders for left and right values.
+ left <- c()
+ right <- c()
+
+ # Move all the smaller values to the left, bigger values to the right.
+ lapply(arr(arr != mid), function(d) (
+ if (d < mid) (
+ left <<- c(left, d)
+ )
+ else (
+ right <<- c(right, d)
+ )
+ ))
+
+ if (length(left) > 1) (
+ left <- quickSort(left)
+ )
+
+ if (length(right) > 1) (
+ right <- quickSort(right)
+ )
+
+ # Finally, return the sorted values.
+ c(left, mid, right)
+ )
>
> x <-sample(1:100, 10)
>
> RES <- quickSort(x)
> RES

Вихід

5. Злиття сортування

Сортування сорту дуже схоже на швидкодію, проте тут масив розділений на дві рівні половини. Алгоритм сортування злиття був розділений на дві частини функцією злиття та сортування. При сортуванні злиття список розбивається на кілька підсписів, поки кожен підпис не складається з окремого елемента. Об'єднання результатів цих підсписів - це відсортований список.

> mmerge<-function(a, b) (
+ r<-numeric(length(a)+length(b))
+ ai<-1; bi<-1; j<-1;
+ for(j in 1:length(r)) (
+ if((ai<=length(a) && a(ai)length(b)) (
+ r(j) <- a(ai) + ai <- ai+1
+ ) else (
+ r(j) <- b(bi) + bi <- bi+1
+ )
+ )
+ r
+ )
> mmergesort<-function(A) (
+ if(length(A)>1) (
+ q <- ceiling(length(A)/2)
+ a <- mmergesort(A(1:q))
+ b <- mmergesort(A((q+1):length(A)))
+ mmerge(a, b)
+ ) else (
+ A
+ )
+ )
>
> x <-sample(1:100, 10)
>
> RES <- mmergesort(x)
> RES

Вихід

6. HeapSort

Техніка сортування Heap дуже схожа на сортування вибору, коли найменший елемент із несортованого списку вибирається в кожній ітерації та розміщується на початку списку. Однак техніка кучеряви використовує поняття дерева.

> heap.structure<-function(vect)
+ (
+ le=length(vect)
+ heap=vec
+ for (k in le:1)
+ (
+ heap=modify_heap(heap, k)
+ )
+ return(heap)
+ )
>
>
> modify_heap<-function(heap, rooti)
+ (
+ le=length(heap)
+ flag=0
+
+ while (rooti*2 <= le && flag==1)
+ (
+ left.i=rooti*2
+ right.i=rooti*2+2
+ flag=1
+ child=c(heap(left.i), heap(right.i))
+ child=child(!is.na(child)) + min.ind=which.min(child)
+ if (heap(rooti)>child(min.ind))
+ (
+ flag=1
+ heap.ind=c(left.i, right.i)(min.ind) +
+ tmp1=heap(heap.ind) + heap(heap.ind)=heap(rooti) + heap(rooti)=tmp1
+
+ rooti=heap.ind
+ )
+ )
+ return(heap)
+ )
>
> heap_sort<-function(heap)
+ (
+ sorted.heap=NULL
+ le=length(heap)
+ while(le>0)
+ (
+ sorted.heap=c(sorted.heap, heap(1))
+ le=length(heap)
+ heap(1)=heap(le) + heap=heap(1:(le-1)) + heap=modify_heap(heap, rooti=1)
+ le=le-1
+ )
+ return(sorted.heap)
+ )
>
>
> x <- sample(1:100, 10)
> heap=heap.building(x)
> heap_sort=heap_sort(heap)
> heap_sort

Вихід

Висновок

У цій статті ми бачили різні способи сортування даних за допомогою R. Ми бачили, як команда сортування та порядку використовується для сортування кадру даних, в статті були показані подальші обмеження функції сортування щодо функції замовлення. Детальне пояснення різних алгоритмів сортування, таких як сортування бульбашок, сортування селекції та сортування об'єднань, було ретельно обговорено. Сортування є одним із найважливіших етапів аналізу даних, мають різні функції для кількох потреб. Інженер даних повністю вибирає найбільш підходящий метод сортування на основі наявних даних.

Рекомендовані статті

Це керівництво по сортуванню в Р. Тут ми обговорюємо, що таке сортування за R, особливості та типи сортування в Р. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Мови наукових даних
  2. База даних у SQL
  3. Типи даних у С
  4. Типи даних PostgreSQL
  5. Вступ до сортування в Табау
  6. Сортування вставки в JavaScript
  7. Повне керівництво по сортуванню в C # з прикладами
  8. Функція сортування в Python за допомогою прикладів

Категорія: