Bevezetés a válogatásba R
Az osztályozás az adatelemzés egyik kritikus szempontja. Ez egy technika, amelyben az adatokat meghatározott sorrendben rendezik el vagy szétválasztják. Az adatokat rendezzük annak érdekében, hogy a szükséges információt kinyerjük az adatkészletből. Például, ha az adatokat növekvő sorrendben rendezi a dátum kulcs alapján, itt a kritériumokat meghatározták a rendezés érdekében. Ez a művelet könnyen elvégezhető az R nyelv használatával. Az R nyelvben többféle rendezési funkció létezik, például a buborék rendezése és a szelekció. Ebben a cikkben meglátjuk a különféle rendezési funkciók fontosságát, és mindegyiket példákkal magyarázzuk.
A válogatást R-ben végezzük
Az adatok R-ben történő rendezésének többféle módja van. Az adatelemző feladata, hogy mérlegelje az adatok felépítése alapján a legmegfelelőbb módszert. Az R nyelvnek több funkciója és módja van az adatok rendezésére, például a sort (), order () és dplyrI () pack.
Az adatok rendezése előtt szem előtt tartandó dolgok.
- Az adatok sorrendje növekvő vagy csökkenő sorrendben.
- Több oszlop válogatási kritériumai.
- Hiányzó és másodpéldányos értékek elszámolása a rendezés során. Az elemzőnek kell eldöntenie, hogy mit kell tenni a hiányzó és az ismétlődő értékekkel. A nulla értékek eltávolítása vagy cseréje előtt figyelembe kell venni az adatokra gyakorolt általános hatást.
Rendezés () függvény R-ben
Az R rendezési funkciója a vektor rendezésére szolgál. Alapértelmezés szerint az érték növekvő sorrendben van rendezve. Vegyünk egy példát az osztálytermi összes tanuló jelölés oszlopára.
A vektor rendezésének szintaxisa
“sort (x, decreasing = FALSE)”
Itt x a vektort jelöli, és a csökkenést TRUE értékre kell váltani, ha a válogatást csökkenő sorrendben kell elvégezni. A rendezési funkciót a numerikus vagy karaktervektor kívánt sorrendbe rendezéséhez használjuk. A rendezési funkció fő korlátozása az, hogy nem használható adatkeret rendezésére. E korlátozás leküzdésére a Order () függvényt használjuk.
Alapvető rendezési példa a sort () függvény használatával
set.seed(1)
x <- sample(1:100, 10)
x
Kimenet
(1) 68 39 1 34 87 43 14 82 59 51
sort (x)
Kimenet
(1) 1 14 34 39 43 51 59 68 82 87Az adatkeretek rendezése a order () függvény segítségével valósítható meg. A változók könnyen növekvő vagy csökkenő sorrendbe rendezhetők, azonban a rendelési funkció alapértelmezés szerint növekvő sorrendben rendezi a változókat.
> 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
Felhívjuk figyelmét, hogy a negatív jelet az Életkor oszlop előtt (-df $ Életkor) használják az Életkor csökkenő sorrendbe rendezése érdekében. Alternatív megoldásként a csökkenő érv is használható ebben a helyzetben. A Rendelés funkció az oszlop nevére, és nem az oszlop indexére utal. Például az életkor helyett az 1-es adatkeret index-referenciája. Az indexértékek szem előtt tartásával „0” kezdődik.
Néhány esetben előfordulhat, hogy az adatokat több kritérium alapján kell osztályoznunk, ez R-ben érhető el változó nevek vagy indexszámok segítségével. Az alábbi példában az mtcars adatkészletet használtam, amely az R stúdióban elérhető.
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-ben az adatok rendezésének alternatív módja a dplyr csomag használata. Ez a csomag nagyon könnyen használható és megbízható, pontos utasításokkal elérhető.
> install.packages("dplyr")
> library(dplyr)
> df <- mtcars
>
> # sort the dataframe by key disp
> arrange(mydata, disp)
Rendezés típusai R-ben
Az R több algoritmussal van felszerelve az adatok rendezéséhez. Az alábbiakban bemutatjuk a különféle típusú rendezési funkciókat. A különféle rendezési típusok szemléltetésére egy tömbből 10 véletlenszerű számot használunk.
1. Bubble Sort
Ebben az algoritmusban két értéket hasonlítanak össze egymással, és az elemek cserélik egymás helyét, amikor a kritériumok teljesülnek. Lehet növekvő vagy csökkenő sorrendben. Buborék rendezésben párok alakulnak ki a változóban elérhető elemek számára, és az elemeket összehasonlítják egymással, ha az egyik elem nagyobb, mint a másik, akkor cserélték őket. A folyamatot megismételjük az utolsó elemig.
> 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
Kimenet
2. Beszúrás rendezése
A beszúrási rendezési algoritmusban összehasonlítják a rendezett és a válogatás nélküli elemeket, és a válogatás nélküli elemet minden egyes iteráció után megfelelő helyre helyezik.
Ebben az algoritmusban feltételezzük, hogy az első elem rendezve van, és a második elemet külön tárolják kulcs elemként. Ezután a rendezett elemet összehasonlítják a kulccsal. Ha a rendezett elem nagyobb, mint a kulcs elem, akkor a helyeket felcserélik, és a kulcs elem az első elem.
> 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
Kimenet
3. Kiválasztás Rendezés
A szelekciós rendezési funkció egy széles körben használt válogatási algoritmus, amelyet az R nyelven használnak. Az ilyen típusú válogatás során a válogatott listából a legkisebb elem a lista elejére kerül. A kiválasztási rendezési algoritmusban a válogatott lista tömbjéből a legkisebb elem kerül kiválasztásra, és minden iterációnál a válogatás nélküli lista elejére kerül. Például egy véletlen sorrendben elrendezett számsorban a kiindulási elemet vagy számot választják legalább. A következő lépésben a kiválasztott minimális számot összehasonlítják a következő elemmel vagy számmal. Ha az összehasonlított elem kisebb, mint a kiválasztott minimum, akkor a második elem lesz a minimum. Ez a folyamat az utolsó elemig ismétlődik.
> 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
Kimenet
4. Gyors rendezés
A Quicksort algoritmus ugyanúgy működik, mint az osztás és a szabály. A véletlenszerű elemet egy tömb pivotjává választják, majd az összes többi elemet a pivot kivételével két partícióra osztják. A következő lépésben minden olyan elem, amely kisebb és nagyobb, mint a forgócsapat, két különböző partícióra oszlik. Végül az elemeket rekurzióval rendezzük.
> # 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
Kimenet
5. Rendezés egyesítése
Az merge sort nagyon hasonló a quicksort-hoz, itt a tömb két egyenlő felre van osztva. Az egyesítési rendezési algoritmust két részre osztották: egyesítésre és rendezésre. Egyesítéskor a listákat több al-listára bontják, mindaddig, amíg minden al-lista különálló elemből áll. Az al-listák eredményeinek egyesítése válogatott lista.
> 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
Kimenet
6. HeapSort
A Heap Sort technika nagyon hasonló a szelekciós rendezéshez, ahol a válogatás nélküli listából a legkisebb elem kerül kiválasztásra az egyes iterációkban és a lista elején. A halomfajta-technika azonban fa fogalmakat használ.
> 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
Kimenet
Következtetés
Ebben a cikkben láttuk, hogyan lehet az R osztályozásával különféle módon osztályozni az adatokat. Láttuk, hogy az adatkeret rendezéséhez hogyan használják a rendezés és a sorrend parancsot. A cikkben a rendezési funkció további korlátozásait mutatták a rendelési funkcióval szemben. A különféle rendezési algoritmusok, mint például a buborék rendezése, a válogatás rendezése és az egyesítés rendezése, részletes magyarázatát alaposan megvitatták. Az osztályozás, mivel ez az adatok elemzésének egyik legfontosabb lépése, eltérő funkciókkal rendelkezik, többszörös igények kielégítésére. Az adatmérnök feladata, hogy a rendelkezésre álló adatok alapján válassza ki a legmegfelelőbb rendezési módszert.
Ajánlott cikkek
Útmutató volt az R. rendezéséhez. Itt tárgyaljuk, mi az R osztályozás, jellemzői és típusai az R. osztályban. A további javasolt cikkeken keresztül további információkat is megtudhat -
- Adattudományi nyelvek
- Adatbázis SQL-ben
- Adattípusok C-ben
- PostgreSQL adattípusok
- Bevezetés a rendezésbe a Tableau-ban
- Beszúrás Rendezés a JavaScript-ben
- Teljes útmutató a C # szerinti rendezéshez, példákkal
- Rendezési funkció Python-ban példákkal