Úvod do triedenia v R

Triedenie je jedným z rozhodujúcich aspektov analýzy údajov. Je to technika, pri ktorej sú údaje usporiadané alebo segregované v konkrétnom poradí. Dáta sú usporiadané tak, aby sa zo súboru údajov získali potrebné informácie. Napríklad usporiadanie údajov vo vzostupnom poradí na základe kľúča dátumu, tu boli stanovené kritériá na zoradenie. Túto operáciu je možné ľahko vykonať pomocou jazyka R. V jazyku R existujú rôzne funkcie triedenia, napríklad triedenie bubliniek a triedenie výberu. V tomto článku si ukážeme dôležitosť rôznych triediacich funkcií a každú z nich vysvetlíme príkladmi.

Triedenie vykonané v R.

Existuje niekoľko spôsobov, ako je možné údaje triediť v R. Je na analytikovi údajov, aby zvážil najvhodnejšiu metódu založenú na štruktúre údajov. Jazyk R má viacero funkcií a spôsobov, ako triediť údaje, napríklad balík sort (), order () a dplyrI ().

Pred triedením údajov je potrebné mať na pamäti.

  1. Poradie, v ktorom je potrebné údaje triediť vzostupne alebo zostupne.
  2. Kritériá triedenia viacerých stĺpcov.
  3. Účtovanie chýba a duplicitné hodnoty počas triedenia. Je na analytikovi, aby rozhodol, čo sa musí urobiť s chýbajúcimi a duplikujúcimi hodnotami. Pred odstránením alebo nahradením nulových hodnôt by sa mal zvážiť celkový vplyv na údaje.

Funkcia sort () v R

Funkcia triedenia v R sa používa na triedenie vektora. V predvolenom nastavení je hodnota usporiadaná vzostupne. Vezmime príklad stĺpca známok všetkých študentov v triede.

Syntax na usporiadanie vektora je

“sort (x, decreasing = FALSE)”

Tu x znamená vektor a znižovanie sa musí nahradiť TRUE, keď sa triedenie musí vykonávať v zostupnom poradí. Funkcia zoradenia sa používa na usporiadanie číselných alebo znakových vektorov v požadovanom poradí. Hlavným obmedzením funkcie zoradenia je to, že sa nemôže použiť na zoradenie dátového rámca. Na prekonanie tohto obmedzenia sa používa funkcia Order ().

Príklad základného triedenia pomocou funkcie sort ()

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

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

sort (x)

Výkon

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

Zoradenie dátových rámcov je možné vykonať pomocou funkcie order (). Premenné sa dajú ľahko zoradiť vzostupne alebo zostupne, ale funkcia poradia predvolene zoradí premennú vzostupne.

> 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

Upozorňujeme, že pred stĺpcom Age (-df $ Age) sa používa záporné znamienko, aby sa vek zoradil zostupne. V tejto pozícii sa môže alternatívne použiť zostupný argument. Funkcia Order sa používa na označenie indexu stĺpca namiesto názvu stĺpca. Napríklad namiesto veku je referenčným indexom dátového rámca „1“. Majte na pamäti, že hodnoty indexu začínajú „0“.

V niektorých prípadoch bude možno potrebné údaje zoradiť podľa viacerých kritérií, čo sa dá dosiahnuť pomocou R pomocou názvov premenných alebo indexových čísel. V nižšie uvedenom príklade som použil dataset mtcars, ktorý je k dispozícii v štúdiu 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) ), )

V R je alternatívny spôsob zoradenia údajov pomocou balíka dplyr. Toto balenie je veľmi jednoduché a spoľahlivé s dostupnými presnými pokynmi.

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

Druhy triedenia v R

R je vybavený viacerými algoritmami na vykonávanie triedenia údajov. Nižšie sú uvedené rôzne typy triediacich funkcií. Na ilustráciu rôznych typov triedenia sa používa vzorka 10 náhodných čísel z poľa.

1. Zoradenie bubliniek

V tomto algoritme sa porovnávajú dve hodnoty vedľa seba a prvky vymieňajú svoju pozíciu, keď sú splnené kritériá. Môže byť vzostupne alebo zostupne. V bublinovom usporiadaní sa vytvárajú páry pre prvky dostupné v premennej a prvky sa porovnávajú proti sebe, keď je jeden prvok väčší ako druhý, prehodil. Proces sa opakuje až do posledného prvku.

> 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

Výkon

2. Zoradenie vloženia

V algoritme triedenia vloženia sa porovnajú zoradené a netriedené prvky a netriedený prvok sa po každej iterácii umiestni na vhodné miesto.

V tomto algoritme sa predpokladá, že prvý prvok bude triedený a druhý prvok je uložený samostatne ako kľúčový prvok. Zoradený prvok sa potom porovná s kľúčom. Ak je zoradený prvok väčší ako kľúčový prvok, miesta sa zamenia a kľúčový prvok je prvý prvok.

> 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

Výkon

3. Výber Zoradiť

Funkcia triedenia výberu je široko používaný algoritmus triedenia používaný v jazyku R. Pri tomto type zoradenia sa najmenší prvok zo zoznamu netriedených tlačí na začiatok zoznamu. V algoritme triedenia výberu sa vyberie najmenší prvok zo súboru netriedeného zoznamu a umiestni sa na začiatok netriedeného zoznamu pri každej iterácii. Napríklad v rade čísiel usporiadaných v náhodnej sekvencii sa ako minimum vyberie počiatočný prvok alebo číslo. V nasledujúcom kroku sa zvolený minimálny počet porovná s ďalším prvkom alebo číslom. V prípade, že porovnávaný prvok je menší ako naše vybrané minimum, druhý prvok sa stáva minimom. Tento proces sa opakuje až do posledného prvku.

> 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

Výkon

4. Rýchle zoradenie

Algoritmus Quicksort funguje ako rozdelenie a pravidlo. Náhodný prvok sa vyberie ako pivot v poli a potom sa všetky ostatné prvky okrem pivotu rozdelia do dvoch oddielov. V ďalšom kroku sú všetky prvky, ktoré sú menšie ako a väčšie ako čap, rozdelené do dvoch rôznych oddielov. Nakoniec sa prvky triedia pomocou rekurzie.

> # 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

Výkon

5. Zlúčiť zoradenie

Zlúčiť triedenie je veľmi podobné rýchlemu triedeniu, tu je však pole rozdelené na dve rovnaké polovice. Algoritmus zlúčenia zoradenia bol rozdelený na dve časti, zlúčenie a triedenie. Pri zlúčenom zoradení sa zoznam rozdelí do viacerých podzoznamov, kým každý podzoznam nebude pozostávať z jedného prvku. Zlúčenie týchto výsledkov podzoznamov je triedený zoznam.

> 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

Výkon

6. HeapSort

Technika triedenia haldy je veľmi podobná technike výberu triedenia, keď sa v každej iterácii vyberie najmenší prvok z netriedeného zoznamu a umiestni sa na začiatok zoznamu. Technika haldy však používa stromové koncepty.

> 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

Výkon

záver

V tomto článku sme videli rôzne spôsoby, ako je možné údaje triediť pomocou R. Videli sme, ako sa na zoradenie dátového rámca používa príkaz triedenia a poradia, v článku sa zobrazili ďalšie obmedzenia funkcie triedenia nad funkciou poradia. Podrobné vysvetlenie rôznych triediacich algoritmov, ako sú triedenie bubliniek, triedenie výberu a triedenie zlúčení, bolo dôkladne prediskutované. Triedenie je jedným z najdôležitejších krokov analýzy údajov a má rôzne funkcie pre rôzne potreby. Je úplne na technikovi údajov, aby vybral najvhodnejší spôsob triedenia na základe dostupných údajov.

Odporúčané články

Toto bol sprievodca triedením v R. Tu diskutujeme o tom, čo je triedenie v R, vlastnosti a typy triedenia v R. Ďalšie informácie nájdete aj v ďalších navrhovaných článkoch -

  1. Jazyky vedy o údajoch
  2. Databáza v SQL
  3. Typy údajov v C
  4. Dátové typy PostgreSQL
  5. Úvod do triedenia v table
  6. Vloženie Zoradiť v JavaScripte
  7. Kompletný sprievodca triedením v C # s príkladmi
  8. Funkcia triedenia v Pythone s príkladmi

Kategórie: