Uvod u razvrstavanje u R

Razvrstavanje je jedan od ključnih aspekata analize podataka. To je tehnika u kojoj su podaci raspoređeni ili odvojeni u određenom redoslijedu. Podaci su razvrstani kako bi se iz podataka izvukli potrebni podaci. Na primjer, organiziranje podataka u uzlaznom redoslijedu na temelju ključa datuma, ovdje su navedeni kriteriji za sortiranje. Ova se operacija može lako izvesti pomoću jezika R. Na jeziku R postoji više funkcija sortiranja poput mjehurića i odabira sortiranja. U ovom ćemo članku vidjeti važnost različitih funkcija sortiranja i objasniti svaku od njih s primjerima.

Razvrstavanje izvedeno u R

Postoji više načina na koje se podaci mogu sortirati u R. Na analitičaru podataka mora se razmotriti najprikladnija metoda koja se temelji na strukturi podataka. R jezik ima više funkcija i načina za sortiranje podataka kao što su vrsta (), order () i dplyrI () paket.

Treba imati na umu prije razvrstavanja podataka.

  1. Poredak u kojem se podaci trebaju sortirati uzlazno ili silazno.
  2. Kriteriji za razvrstavanje više stupaca.
  3. Računovodstvo nedostajućih i dupliciranih vrijednosti tijekom razvrstavanja. Na analitičaru je da odluči što treba učiniti s nedostajućim i duplikatnim vrijednostima. Prije uklanjanja ili zamjene nultu vrijednosti treba uzeti u obzir ukupni utjecaj na podatke.

Poredaj () funkciju u R

Funkcija sortiranja u R koristi se za sortiranje vektora. Prema zadanim vrijednostima vrijednost je organizirana uzlaznim redoslijedom. Uzmimo primjer stupca marka svih učenika u učionici.

Sintaksa za sortiranje vektora

“sort (x, decreasing = FALSE)”

Ovdje se x odnosi na vektor, a smanjenje se mora zamijeniti na TRUE kada sortiranje treba biti napravljeno silaznim redoslijedom. Funkcija sortiranja koristi se za uređenje numeričkog ili znakovnog vektora u željenom redoslijedu. Glavno ograničenje funkcije sortiranja je to što se ona ne može koristiti za sortiranje okvira podataka. Za prevladavanje ovog ograničenja koristi se naredba ().

Osnovni primjer sortiranja pomoću funkcije sort ()

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

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

vrsta (x)

Izlaz

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

Razvrstavanje okvira podataka može se postići pomoću funkcije order (). Varijable se mogu lako sortirati uzlaznim ili silaznim redoslijedom, no funkcija naloga će varijablu sortirati prema zadanoj vrijednosti u uzlaznom redoslijedu.

> 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

Imajte na umu da se negativni znak koristi ispred stupca Dob (-df $ Dob) kako bi se Starost sortirala prema silaznom redoslijedu. Argument koji se smanjuje može se upotrijebiti u ovom položaju. Funkcija Red koristi se za upućivanje na indeks stupaca, a ne na naziv stupca. Na primjer, umjesto dobi, referenca okvira podataka u indeksu bila bi "1". Imajući na umu vrijednosti indeksa započnite s "0".

U nekoliko ćemo slučajeva možda morati sortirati podatke s više kriterija, a to se može postići u R uz pomoć korištenja imena varijabli ili brojeva indeksa. U primjeru u nastavku, koristio sam mtcars skup podataka koji je dostupan u R studiju.

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

U R-u, alternativni način sortiranja podataka je pomoću dplyr paketa. Ovaj je paket vrlo jednostavan za korištenje i pouzdan, uz dostupne točne upute.

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

Vrste sortiranja u R

R je opremljen s više algoritama za izvođenje sortiranja podataka. Ispod su različite vrste sortiranja. Kako bi se ilustrirale različite vrste sortiranja, koristi se uzorak od 10 slučajnih brojeva iz niza.

1. Bubble Sort

U ovom algoritmu dvije se vrijednosti uspoređuju i elementi zamjenjuju svoj položaj kad su kriteriji zadovoljeni. Može biti uzlazni ili silazni. U balonima se sortiraju parovi za elemente dostupne u varijabli i elementi se uspoređuju jedni s drugima, kada je jedan element veći od drugog koji su zamijenili. Postupak se ponavlja sve do posljednjeg elementa.

> 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

Izlaz

2. Umetanje vrsta

U algoritmu sortiranja umetanja uspoređuju se sortirani i nesortirani elementi, a nesortirani element postavlja se na prikladno mjesto nakon svake iteracije.

U ovom algoritmu pretpostavlja se da je prvi element sortiran, a drugi element odvojeno pohranjen kao ključni element. Zatim se poredani element uspoređuje s ključem. Ako je sortirani element veći od ključnog elementa, mjesta se mijenjaju, a ključni element je prvi element.

> 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

Izlaz

3. Izbor sortiranja

Funkcija sortiranja odabira je široko korišteni algoritam sortiranja koji se koristi u R jeziku. Kod ove vrste sortiranja najmanji element s nepotpunog popisa gura se na početak popisa. U algoritmu sortiranja za odabir odabire se najmanji element iz niza nekorištenih popisa i stavlja se na početak nesortiranog popisa pri svakoj iteraciji. Na primjer, u nizu brojeva raspoređenih u slučajni niz početni element ili broj odabran je kao minimum. U sljedećem koraku odabrani minimalni broj uspoređuje se sa sljedećim elementom ili brojem. U slučaju da je uspoređeni element manji od našeg odabranog minimuma, drugi element postaje minimum. Ovaj se proces ponavlja do posljednjeg elementa.

> 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

Izlaz

4. Brzo sortiranje

Quicksort algoritam djeluje poput dijeljenja i vladanja. Nasumični se element odabire kao stožer u nizu, a zatim se svi ostali elementi osim stožera dijele na dvije particije. U sljedećem koraku svi elementi koji su manji i veći od stožera podijeljeni su u dvije različite particije. Na kraju, elementi se razvrstavaju pomoću rekurzije.

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

Izlaz

5. Spoji sortiranje

Vrsta spajanja je vrlo slična quicksort-u, međutim niz je podijeljen na dvije jednake polovice. Algoritam sortiranja spajanja podijeljen je u dva dijela funkciju spajanja i sortiranja. Pri razvrstavanju spajanja, popis se raščlanjuje na više pod-popisa dok se svaki pod-popis sastoji od pojedinačnog elementa. Spajanje rezultata tih popisa sadrži sortirani popis.

> 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

Izlaz

6. HeapSort

Tehnika razvrstavanja heap-a vrlo je slična onoj sortiranja odabira gdje se za svaku iteraciju odabire najmanji element s popisa, a stavlja na početak popisa. Međutim, tehnika raspadanja koristi koncepte drveta.

> 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

Izlaz

Zaključak

U ovom smo članku vidjeli različite načine na koje se podaci mogu sortirati pomoću R. Vidjeli smo kako se naredba sortiranja i naloga koristi za razvrstavanje okvira podataka, u članku su prikazana dodatna ograničenja funkcije sortiranja u odnosu na funkciju naloga. Detaljno su objašnjena različita algoritma sortiranja poput sortiranja mjehurića, sortiranja odabira i spajanja sorti. Poredavanje kao jedan od najvažnijih koraka analize podataka ima različite funkcije za višestruke potrebe. Inženjer podataka ovisi o odabiru najprikladnije metode sortiranja na temelju dostupnih podataka.

Preporučeni članci

Ovo je vodič za sortiranje u R. Ovdje smo raspravljali o tome što je sortiranje u R, značajke i vrste sortiranja u R. Također možete proći kroz naše druge predložene članke da biste saznali više -

  1. Jezici podataka o znanju podataka
  2. Baza podataka u SQL-u
  3. Vrste podataka u C
  4. Vrste podataka PostgreSQL
  5. Uvod u razvrstavanje u Tableauu
  6. Poredak umetanja u JavaScript
  7. Kompletan vodič za sortiranje u C # s primjerima
  8. Funkcija sortiranja u Python-u s primjerima

Kategorija: