For-Loop R DataFrame

For Loop R Dataframe



For-ciklas yra valdymo struktūra, leidžianti pakartoti instrukcijų rinkinį tam tikrą skaičių kartų. Tai dažniausiai naudojamas iteracijos metodas R, ypač kai mums reikia atlikti tą pačią operaciją su kai kuriais elementais arba kartoti per duomenų struktūrą, tokią kaip DataFrame. Eilutės ir stulpeliai sudaro duomenų rėmelius R, kur kiekviena eilutė reiškia vieną stebėjimą, o kiekvienas stulpelis žymi to stebėjimo kintamąjį arba aspektą.

Šiame straipsnyje mes naudojame for-ciklą, kad galėtume kartoti DataFrame įvairiais būdais. Turėkite omenyje, kad eilučių ir stulpelių kartojimas gali būti labai sudėtingas dideliems duomenų rėmams.







1 pavyzdys: For-Loop Over DataFrame eilučių naudojimas R

For-ciklas R gali būti naudojamas kartoti DataFrame eilutes. For-ciklo viduje galime naudoti eilutės indeksą, kad pasiektume kiekvieną DataFrame eilutę. Panagrinėkime šį R kodą, kuris parodo for-ciklą, kuris kartojasi nurodyto DataFrame eilutėse.



duomenys = duomenys.kadras(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

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

eilutė <- data[i, ]

spausdinti (eilutė)

}

Čia pirmiausia apibrėžiame funkciją data.frame() „data“ viduje. Funkciją data.frame() čia sudaro trys stulpeliai. Kiekviename stulpelyje yra atitinkamai skaičių seka nuo 1 iki 5, 6 iki 10 ir 11 iki 15. Po to yra įdiegta for-loop funkcija, kuri kartojasi per DataFrame „duomenų“ eilutes, naudojant funkciją nrow(), kad gautų bendrą eilučių skaičių. Ciklo kintamasis „i“ perima viso „duomenų“ eilučių skaičiaus reikšmes.



Tada ištraukiame i-ąją DataFrame „duomenų“ eilutę naudodami laužtinius skliaustus „[ ]“. Ištraukta eilutė saugoma „eilutės“ kintamajame, kurį išspausdins funkcija print ().





Taigi ciklas kartojasi visose DataFrame eilutėse ir išvestyje rodo eilučių numerius kartu su stulpelio reikšmėmis.



2 pavyzdys: For-Loop Over DataFrame stulpelių naudojimas

Panašiai galime naudoti for-ciklą R, norėdami pereiti per nurodyto duomenų rėmelio stulpelius. Galime naudoti ankstesnį kodą, norėdami pereiti per stulpelius, tačiau turime naudoti funkciją ncol () cikle. Ir atvirkščiai, mes turime paprasčiausią „DataFrame“ stulpelių ciklą naudojant „for-loop“. Apsvarstykite šį R kodą:

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

2 stulpelis = c(11, 21, 31, 41, 51),

3 stulpelis = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

stulpelis <- df[[col]]

spausdinti (stulpelis)

}

Čia pirmiausia sukuriame df kintamąjį, kuriame data.frame() naudojamas su stulpelių įterpimu. „df“ duomenų rėmelyje yra trys stulpeliai, kuriuose yra skaitinės reikšmės. Tada mes naudojame for-ciklą, norėdami pakartoti „data“ DataFrame stulpelių pavadinimus naudodami funkciją colnames (). Kiekvienoje iteracijoje ciklo kintamasis „col“ įgyja dabartinio stulpelio pavadinimą. Tada ištrauktas stulpelis išsaugomas naujame kintamajame, kuris yra „stulpelis“.

Taigi „stulpelio“ kintamojo duomenys išspausdina išvestį šioje konsolėje:

3 pavyzdys: For-Loop naudojimas visame duomenų rėmelyje

Ankstesniuose pavyzdžiuose mes perjungėme stulpelius ir eilutes atitinkamai naudodami for-ciklą. Dabar mes naudojame įdėtąsias kilpas, kad vienu metu kartotume „DataFrame“ eilutes ir stulpelius. R kodas pateikiamas toliau, kai stulpeliuose ir eilutėse naudojama įdėta for-kilpa:

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

names=c('kim', 'Jonas', 'Ianas', 'Mark'),

location=c('Australija', 'Amerika', 'Kanada', 'Jordanija'),

alga=c(2000, 1800, 1500, 1000))

for (1 eilutėje:nrow(darbuotojai)) {

for (col in 1:ncol(darbuotojai)) {

print(paste('Eilutės indeksas', eilutė, 'stulpelio pavadinimas', stulpelis, 'ląstelės vertė', darbuotojai[eilutė, stulpelis]))

}

}

Čia deklaruojame kintamąjį „darbuotojai“, kur data.frame() iškviečiamas stulpeliams nustatyti. Reikšmės kiekviename stulpelyje nurodomos naudojant vektorius. Tada duomenų rėmelio „darbuotojų“ eilutėje ir stulpelyje naudojame dvi įdėtas kilpas duomenims kartoti. Išorinis ciklas kartojasi per nurodyto DataFrame eilutes naudojant „1:nrow(employees)“. Kiekvienos eilutės vidinėje kilpoje naudojamas „1:ncol(employees)“, kad pakartotinai kartotųsi „DataFrame“ stulpeliai.

Po to įdėtųjų kilpų viduje turime funkciją print () , kuri diegia funkciją paste (), kad sujungtų eilutės indeksą, stulpelio indeksą ir langelio vertę į vieną eilutę. Darbuotojo [eilutė, stulpelis] išraiška čia gauna reikšmę dabartiniame langelyje, kur eilutė ir stulpelis yra atitinkamai esami eilutės ir stulpelio indeksai.

Taigi, išvestis konsolėje yra nuskaitoma su sujungtu eilutės indeksu, stulpelio indeksu ir langelio reikšme į vieną eilutę.

4 pavyzdys: For-Loop alternatyvus metodas R

Ciklas for dabar yra pasenęs R kalba. Tačiau jame pateikiami keli alternatyvūs metodai, kurie veikia taip pat kaip for-kilpa ir yra greitesni nei for-ciklai. Metodas yra iš „taikymo šeimos“ funkcijų, kurios fone veikia cikle, kad būtų kartojama per „DataFrames“. Panagrinėkime šį R kodą, kuriame funkcija sapply () naudojama norint pereiti per DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

taikyti (dfX, suma)

Čia pirmiausia sukuriame „dfX“ DataFrame, iškviesdami funkciją data.frame() su dviem stulpeliais, kurių kiekviename yra skaitinės reikšmės. Tada į konsolę išspausdiname originalų „dfX“ duomenų rėmelį. Kitame žingsnyje mes naudojame funkciją sapply() norėdami pakartoti pateiktą DataFrame ir gauti kiekvieno stulpelio sumą. Funkcija apply() paprastai naudoja „x“ ir „FUN“ argumentus. Šiuo atveju X yra „dfX“ duomenų rėmelis, o „FUN“ yra suma () funkcija, taikoma kiekvienam „DataFrame“ stulpeliui.

Iteracijos, kuri pasiekiama naudojant sapply() funkciją, rezultatas pasiekiamas kitame ekrane. DataFrame sumos operacijos rezultatai rodomi kiekviename stulpelyje. Be to, mes taip pat galime naudoti kai kurias kitas „taikyti šeimos“ funkcijas „for-loop“ operacijai R:

Išvada

Dirbame su for-ciklais, kad kartotume DataFrame eilutes ar stulpelius, kad atliktume konkrečią operaciją. For-ciklas naudojamas atskirai, norint kartoti stulpelius ir eilutes. Be to, mes naudojame tai kartodami duomenų rėmo stulpelius ir eilutes tuo pačiu metu. Daugeliu atvejų efektyvesnis yra funkcijų taikymas norimam rezultatui pasiekti. Taikymo funkcijos pavyzdys pateiktas paskutiniame pavyzdyje per ciklo operaciją.