Увод у сортирање у Р

Поредавање је један од кључних аспеката анализе података. То је техника у којој су подаци распоређени или одвојени у одређеном редоследу. Подаци су сортирани како би се из базе података извукли тражени подаци. На пример, поредање података узлазним редоследом на основу кључа датума, овде су наведени критеријуми за сортирање. Ова се операција може лако извести помоћу језика Р. У Р језику постоји више функција сортирања као што су сортирање и избор мехурића. У овом чланку ћемо видети важност различитих функција сортирања и објаснити сваку од њих примерима.

Сортирање извршено у Р

Постоји више начина на које се подаци могу сортирати у Р. На аналитичару података је да размотри најприкладнији начин заснован на структури података. Р језик има више функција и начина за сортирање података као што су сорт (), ордер () и дплирИ () пакет.

Треба имати на уму пре сортирања података.

  1. Редослијед у којем се подаци требају сортирати узлазно или силазно.
  2. Критеријуми за сортирање више ступаца.
  3. Рачуноводство недостајућих и дуплираних вредности током сортирања. На аналитичару је да одлучи шта треба учинити са недостајућим и дуплираним вредностима. Пре уклањања или замене нуланих вредности треба узети у обзир укупни утицај на податке.

Сорт () функција у Р

Функција сортирања у Р користи се за сортирање вектора. Подразумевано се вредност организује узлазним редоследом. Узмимо пример колоне са оценама свих ученика у учионици.

Синтакса за сортирање вектора је

“sort (x, decreasing = FALSE)”

Овде се к односи на вектор и смањује се треба заменити на ТРУЕ када сортирање треба да се деси по опадајућем редоследу. Функција сортирања користи се за уређење нумеричког или знаковног вектора у жељеном редослиједу. Главно ограничење функције сортирања је то што се она не може користити за сортирање оквира података. За превазилажење овог ограничења користи се наредба ().

Основни пример сортирања помоћу сорт () функције

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

Сортирање оквира података може се остварити помоћу функције ордер (). Варијабле се могу лако сортирати по узлазном или силазном редоследу, међутим, функција налога ће променити сортирање у узлазном редоследу.

> 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

Имајте на уму да се негативни знак користи испред ступца Старост (-дф $ Аге) да би се сортирали Доб према силазном редоследу. Алтернативно, у овом положају се може користити силазни аргумент. Функција Ред користи се за упућивање на индекс колона, а не на име колоне. На пример, уместо старосне доби референтни индекс оквира података који би био „1“. Имајући на уму вредности индекса почињу са „0“.

У неколико случајева, можда ћемо морати да сортирамо податке са више критеријума, то се може постићи у Р уз помоћ коришћења променљивих имена или индексних бројева. У следећем примеру сам користио мтцарс скуп података који је доступан у Р студију.

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) ), )

У Р-у је алтернативни начин сортирања података коришћењем дплир пакета. Овај пакет је врло једноставан за употребу и поуздан, са доступним тачним упутствима.

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

Врсте сортирања у Р

Р је опремљен са више алгоритама за вршење сортирања података. Испод су различите врсте сортирања. Да би се илустрирале различите врсте сортирања, користи се узорак од 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. Избор сортирања

Функција сортирања избора је широко кориштен алгоритам сортирања који се користи у Р језику. У овом типу сортирања најмањи елемент са неорториране листе се гура на почетак листе. У алгоритму сортирања за одабир одабире се најмањи елемент из низа неразврстаних листа и ставља се на почетак несортиране листе при свакој итерацији. На пример, у низу бројева распоређених у случајни низ почетних елемената или броја одабран је као минимум. У следећем кораку изабрани минимални број упоређује се са следећим елементом или бројем. У случају да је упоређени елемент мањи од нашег одабраног минимума, други елемент постаје минимум. Овај процес се понавља до последњег елемента.

> 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. Брзо сортирање

Куицксорт алгоритам функционише као подјела и владавина. Насумични елемент је одабран као стожер у низу, а затим су сви остали елементи осим стожера подијељени у двије партиције. У следећем кораку сви елементи који су мањи и већи од стожера подељени су у две различите партиције. На крају, елементи су сортирани помоћу рекурзије.

> # 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. ХеапСорт

Техника разврставања хеап-а врло је слична оној у селекцијској врсти где се у свакој итерацији изабере најмањи елемент са непоновљене листе и постави на почетак пописа. Међутим, техника нагомилавања користи концепте дрвета.

> 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

Излаз

Закључак

У овом чланку смо видели различите начине на које се подаци могу сортирати помоћу Р. Видели смо како се наредба сортирања и налога користи за сортирање оквира података, у чланку су приказана додатна ограничења функције сортирања у односу на функцију налога. Детаљно су објашњена различита алгоритма за сортирање, као што су врста мехурића, сортирање селекције и спајање. Поредавање као један од најважнијих корака анализе података, има различите функције за вишеструке потребе. Инжењер података у потпуности је да одабере најприкладнији начин сортирања на основу расположивих података.

Препоручени чланци

Ово је водич за сортирање у Р. Овде смо расправљали о томе шта је сортирање у Р, карактеристике и врсте сортирања у Р. Такође можете да прођете кроз остале предложене чланке да бисте сазнали више -

  1. Језици науке о подацима
  2. База података у СКЛ-у
  3. Типови података на Ц
  4. Врсте података ПостгреСКЛ
  5. Увод у поређење у Таблеау-у
  6. Разврставање уметања у ЈаваСцрипт
  7. Комплетан водич за сортирање у Ц # са примерима
  8. Функција сортирања у Питхон-у са примерима

Категорија: