For-Loop u R DataFrame

For Loop U R Dataframe



For-petlja je kontrolna struktura koja nam omogućuje ponavljanje skupa instrukcija u određenom broju puta. To je često korištena metoda za iteraciju u R-u, osobito kada trebamo izvesti istu operaciju na nekim elementima ili iterirati preko strukture podataka kao što je ona u DataFrameu. Redovi i stupci čine DataFrames u R gdje svaki redak predstavlja jedno opažanje, a svaki stupac označava varijablu ili aspekt tog opažanja.

U ovom konkretnom članku koristimo for-petlju za ponavljanje preko DataFramea u različitim pristupima. Imajte na umu da iteracija for-petlje kroz retke i stupce može biti visoko računska za velike DataFrames.







Primjer 1: Korištenje For-Loop preko redaka DataFrame u R

For-petlja u R-u može se koristiti za iteraciju preko redaka DataFrame-a. Unutar for-petlje, možemo koristiti indeks retka za pristup svakom retku DataFramea. Razmotrimo sljedeći R kod koji je demonstracija for-petlje za ponavljanje preko redaka navedenog DataFramea.



podaci = podaci.okvir(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i in 1:nrow(data)) {

red <- podaci[i, ]

ispis (red)

}

Ovdje prvo definiramo funkciju data.frame() unutar 'podataka'. Funkcija data.frame() ovdje sadrži tri stupca. Svaki stupac je postavljen nizom brojeva od 1 do 5, 6 do 10, odnosno od 11 do 15. Nakon toga se implementira funkcija petlje for koja ponavlja retke 'podataka' DataFramea pomoću funkcije nrow() da bi se dobio ukupan broj redaka. Varijabla petlje, “i”, preuzima vrijednosti za cijeli broj redaka u “podacima”.



Zatim ekstrahiramo i-ti red DataFrame 'podataka' korištenjem oznake uglatih zagrada '[ ]'. Ekstrahirani red pohranjuje se u varijablu 'row' koju će ispisati funkcija print().





Dakle, petlja ponavlja sve retke u DataFrameu i prikazuje brojeve redaka u izlazu zajedno s vrijednostima stupca.



Primjer 2: Korištenje For-Loop preko DataFrame stupaca

Slično, možemo koristiti for-petlju u R-u za prelazak preko stupaca navedenog podatkovnog okvira. Prethodni kod možemo koristiti za prelazak preko stupaca, ali moramo koristiti funkciju ncol() u for-petlji. Nasuprot tome, imamo najjednostavniji pristup petlji preko stupaca DataFramea koristeći for-loop. Razmotrite sljedeći R kod za ovo:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

col2 = c(11, 21, 31, 41, 51),

stupac3 = c(12, 22, 32, 42, 52))

for(col in columnnames(df)) {

stupac <- df[[stupac]]

ispis (stupac)

}

Ovdje prvo stvaramo varijablu df gdje se data.frame() koristi s umetanjem stupaca. “df” DataFrame sadrži tri stupca koji sadrže numeričke vrijednosti. Zatim koristimo for-petlju za ponavljanje imena stupaca 'data' DataFramea pomoću funkcije colnames(). U svakoj iteraciji, varijabla petlje 'col' preuzima naziv trenutnog stupca. Izdvojeni stupac se zatim pohranjuje u novu varijablu koja je 'stupac'.

Dakle, podaci varijable 'column' ispisuju izlaz na sljedećoj konzoli:

Primjer 3: Korištenje For-Loop preko cijelog DataFramea

U prethodnim primjerima, prelazili smo preko stupaca i redaka koristeći for-petlju. Sada koristimo ugniježđene for petlje za iteraciju po redovima i stupcima DataFramea, istovremeno. Kod R je naveden u nastavku gdje se ugniježđena for-petlja koristi preko stupaca i redaka:

zaposlenici <- data.frame(id=1:4,

names=c('kim', 'John', 'Ian', 'Mark'),

lokacija=c('Australija', 'Amerika', 'Kanada', 'Jordan'),

plaća=c(2000, 1800, 1500, 1000))

za (redak u 1:nrow(zaposlenici)) {

za (kol u 1:nkol(zaposlenici)) {

print(paste('Indeks retka', redak, 'naziv stupca', stupac, 'vrijednost ćelije', zaposlenici [redak, stupac]))

}

}

Ovdje deklariramo varijablu 'zaposlenici' gdje se data.frame() poziva za postavljanje stupaca. Vrijednosti u svakom stupcu navedene su pomoću vektora. Zatim, za redak i stupac DataFramea 'zaposlenici', koristimo dvije ugniježđene for-petlje za ponavljanje podataka. Vanjska petlja ponavlja retke navedenog DataFramea koristeći '1:nrow(employees)'. Za svaki redak, '1:ncol(employees)' koristi se u unutarnjoj petlji za opetovano ponavljanje po stupcima DataFramea.

Nakon toga imamo funkciju print() unutar ugniježđenih petlji koja implementira funkciju paste() za spajanje indeksa retka, indeksa stupca i vrijednosti ćelije u jedan niz. Izraz zaposlenika [redak, stupac] ovdje dobiva vrijednost u trenutnoj ćeliji gdje su red i stupac postojeći indeksi retka i stupca.

Stoga se izlaz na konzoli dohvaća s spojenim indeksom retka, indeksom stupca i vrijednošću ćelije u jedan niz.

Primjer 4: For-Loop alternativna metoda u R

For petlja je sada zastarjela u R jeziku. Međutim, pruža neke alternativne metode koje rade isto kao for-petlja i brže su od for-petlji. Metoda je iz funkcija 'obitelj primjene' koje se izvode za petlju u pozadini radi ponavljanja preko DataFramesa. Razmotrimo sljedeći R kod u kojem se funkcija sapply() koristi za prelazak preko DataFramea.

dfX <- data.frame(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, zbroj)

Ovdje prvo uspostavljamo 'dfX' DataFrame pozivanjem funkcije data.frame() s dva stupca, od kojih svaki sadrži numeričke vrijednosti. Zatim ispisujemo izvorni 'dfX' DataFrame na konzolu. U sljedećem koraku koristimo funkciju sapply() za ponavljanje preko danog DataFramea i dobivanje zbroja svakog stupca. Funkcija sapply() općenito uzima argumente 'x' i 'FUN'. U ovom slučaju, X je 'dfX' DataFrame, a 'FUN' je funkcija sum() koja se primjenjuje na svaki od stupaca DataFramea.

Rezultat iteracije koji se postiže pomoću funkcije sapply() postiže se na sljedećem zaslonu. Rezultati operacije zbroja DataFrame-a prikazani su za svaki stupac. Štoviše, možemo koristiti i neke druge funkcije 'obitelji primjene' za operaciju for-petlje u R:

Zaključak

Radimo s for-petljama za ponavljanje redaka ili stupaca DataFramea za izvođenje određene operacije. For-petlja se koristi pojedinačno za ponavljanje po stupcima i redovima. Nadalje, ovo koristimo za iteraciju preko stupaca i redaka okvira podataka u isto vrijeme. Većinu vremena učinkovitija je primjena funkcija za postizanje željenog rezultata. Primjer funkcije apply dan je u posljednjem primjeru preko operacije for-petlje.