For-Loop R DataFrame'is

For Loop R Dataframe Is



For-loop on juhtimisstruktuur, mis võimaldab meil korrata käskude komplekti teatud arv kordi. See on R-i iteratsiooniks tavaliselt kasutatav meetod, eriti kui peame tegema sama toimingu mõne elemendiga või itereerima andmestruktuuris, näiteks DataFrame'is. Read ja veerud moodustavad R-s DataFrames, kus iga rida tähistab ühte vaatlust ja iga veerg tähistab selle vaatluse muutujat või aspekti.

Selle konkreetse artikli puhul kasutame erinevate lähenemisviiside korral DataFrame'i itereerimiseks for-loopi. Pidage meeles, et ridade ja veergude tsükli iteratsioon võib suurte DataFrame'ide puhul olla väga arvutuslik.







Näide 1: For-Loopi kasutamine DataFrame'i ridade üle R-s

For-tsüklit R-s saab kasutada DataFrame'i ridade itereerimiseks. For-loopi sees saame DataFrame'i igale reale juurdepääsuks kasutada reaindeksit. Vaatleme järgmist R-koodi, mis demonstreerib for-loopi, et itereerida määratud DataFrame'i ridade üle.



andmed = data.frame(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

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

rida <- andmed[i, ]

print (rida)

}

Siin määratleme esmalt funktsiooni data.frame() 'data' sees. Funktsioon data.frame() sisaldab siin kolme veergu. Iga veerg on seatud numbrite jadaga vastavalt 1 kuni 5, 6 kuni 10 ja 11 kuni 15. Pärast seda juurutatakse for-loop funktsioon, mis kordab DataFrame'i 'andmete' ridu, kasutades ridade koguarvu saamiseks funktsiooni nrow(). Silmusmuutuja 'i' võtab väärtused kogu 'andmete' ridade arvule.



Seejärel ekstraheerime DataFrame'i andmete i-nda rea, kasutades nurksulgudes olevat märki '[ ]'. Ekstraheeritud rida salvestatakse muutujasse 'rida', mille prindib funktsioon print().





Seega kordub silmus kõigi DataFrame'i ridade üle ja kuvab väljundis ridade numbreid koos veeru väärtustega.



Näide 2: For-Loopi kasutamine DataFrame'i veergude kaudu

Samamoodi saame R-s kasutada for-loopi, et liikuda üle määratud andmekaadri veergude. Saame kasutada eelmist koodi veergude silmuse tegemiseks, kuid for-tsüklis peame kasutama funktsiooni ncol(). Vastupidi, meil on kõige lihtsam meetod DataFrame'i veergude silmuste loomiseks for-loopi abil. Mõelge selle jaoks järgmisele R-koodile:

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

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

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

for(veerg veergudes(df)) {

veerg <- df[[veerg]]

print (veerg)

}

Siin loome esmalt muutuja df, kus veergude sisestamisel kasutatakse data.frame(). DataFrame 'df' sisaldab kolme veergu, mis sisaldavad arvväärtusi. Järgmisena kasutame tsüklit for-loop, et itereerida DataFrame'i 'data' veergude nimesid, kasutades funktsiooni colnames(). Igas iteratsioonis võtab tsüklimuutuja “col” praeguse veeru nime. Ekstraheeritud veerg salvestatakse seejärel uude muutujasse, mille nimi on 'veerg'.

Seega prindib muutuja “veerg” andmed väljundi järgmisele konsoolile:

Näide 3: For-Loopi kasutamine kogu andmeraamis

Eelmistes näidetes lõime veergude ja ridade silmuse üle, kasutades vastavalt for-tsüklit. Nüüd kasutame pesastatud silmuseid, et korrata samaaegselt nii DataFrame'i ridu kui ka veerge. R-i kood on esitatud järgmiselt, kui veergude ja ridade kohal kasutatakse pesastatud for-tsüklit:

töötajad <- data.frame(id=1:4,

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

location=c('Austraalia', 'Ameerika', 'Kanada', 'Jordaania'),

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

for (rida 1:nrow(töötajad)) {

for (col in 1:ncol(töötajad)) {

print(paste('Rea indeks', rida, 'veeru nimi', veerg, 'lahtri väärtus', töötajad[rida, veerg]))

}

}

Siin deklareerime muutuja 'töötajad', kus veergude määramiseks kutsutakse data.frame(). Iga veeru väärtused määratakse vektorite abil. Seejärel kasutame DataFrame'i 'töötajate' rea ja veeru puhul andmete kordamiseks kahte pesastatud for-tsüklit. Väline tsükkel kordub määratud DataFrame'i ridadel, kasutades '1:nrow(employees)'. Iga rea ​​puhul kasutatakse sisemises tsüklis väärtust „1:ncol(employees)”, et korduvalt itereerida DataFrame'i veerge.

Pärast seda on meil pesastatud silmuste sees funktsioon print (), mis kasutab funktsiooni paste (), et ühendada rea ​​indeks, veeru indeks ja lahtri väärtus üheks stringiks. Töötaja [rida, veerg] avaldis saab siin väärtuse praeguses lahtris, kus rida ja veerg on vastavalt olemasolevad rea ja veeru indeksid.

Seega tuuakse konsooli väljund koos reaindeksi, veeruindeksi ja lahtri väärtusega üheks stringiks.

Näide 4: For-Loop alternatiivne meetod R

For-silmus on nüüd R-keeles aegunud. Siiski pakub see mõningaid alternatiivseid meetodeid, mis töötavad samamoodi kui for-loop ja on kiiremad kui for-loop. Meetod pärineb funktsioonidest Apply family, mis töötavad taustal for-loop, et itereerida üle DataFrames. Vaatleme järgmist R-koodi, kus funktsiooni sapply () kasutatakse DataFrame'i silmuse loomiseks.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

rakendama(dfX, summa)

Siin loome esmalt 'dfX' DataFrame'i, kutsudes välja kahe veeruga funktsiooni data.frame(), millest igaüks sisaldab arvväärtusi. Seejärel prindime konsooli originaalse 'dfX' DataFrame'i. Järgmises etapis kasutame funktsiooni sapply(), et itereerida pakutud DataFrame'i üle ja saada iga veeru summa. Funktsioon apply() võtab üldiselt argumendid 'x' ja 'FUN'. Sel juhul on X „dfX” DataFrame ja „FUN” on sum() funktsioon, mida rakendatakse DataFrame'i igale veerule.

Funktsiooni sapply() abil saavutatud iteratsiooni tulemus saavutatakse järgmisel ekraanil. DataFrame'i summaoperatsiooni tulemused kuvatakse iga veeru kohta. Lisaks saame R-i for-loop operatsiooni jaoks kasutada ka mõnda muud rakendusperekonna funktsiooni:

Järeldus

Me töötame for-loopidega, et itereerida DataFrame'i ridu või veerge konkreetse toimingu tegemiseks. For-loopi kasutatakse veergude ja ridade itereerimiseks eraldi. Lisaks kasutame seda nii andmeraami veergude kui ka ridade itereerimiseks korraga. Enamasti on funktsioonide rakendamine soovitud tulemuse saavutamiseks tõhusam. Rakendusfunktsiooni näide on toodud viimases näites for-loop operatsiooni kohal.