For-Loop R DataFrame

For Loop R Dataframe



For-cilpa ir vadības struktūra, kas ļauj atkārtot instrukciju kopu noteiktā reižu skaitā. Tā ir bieži izmantota R iterācijas metode, it īpaši, ja mums ir jāveic viena un tā pati darbība ar dažiem elementiem vai jāatkārto datu struktūra, piemēram, DataFrame. Rindas un kolonnas veido DataFrames R, kur katra rinda apzīmē vienu novērojumu un katra kolonna apzīmē šī novērojuma mainīgo vai aspektu.

Šajā konkrētajā rakstā mēs izmantojam for-cilpu, lai atkārtotu DataFrame dažādās pieejās. Ņemiet vērā, ka cilpas iterācija starp rindām un kolonnām var būt ļoti skaitļojama lieliem datu rāmjiem.







1. piemērs: For-Loop izmantošana pār DataFrame rindām R

For-cilpu R var izmantot, lai iterētu pa DataFrame rindām. For-cilpas iekšpusē mēs varam izmantot rindas indeksu, lai piekļūtu katrai DataFrame rindai. Apskatīsim šādu R kodu, kas ir for-cilpas demonstrācija, kas atkārtojas noteiktā DataFrame rindās.



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

c2 = c(6:10),

c3 = c(11:15))

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

rinda <- dati[i, ]

drukāt (rinda)

}

Šeit mēs vispirms definējam funkciju data.frame() “datu” iekšpusē. Funkcija data.frame() šeit satur trīs kolonnas. Katra kolonna ir iestatīta ar skaitļu secību attiecīgi no 1 līdz 5, 6 līdz 10 un 11 līdz 15. Pēc tam tiek izvietota for-loop funkcija, kas atkārtojas pa DataFrame “datu” rindām, izmantojot funkciju nrow (), lai iegūtu kopējo rindu skaitu. Cilpas mainīgais “i” iegūst vērtības visam rindu skaitam sadaļā “dati”.



Pēc tam mēs izņemam DataFrame “datu” i-to rindu, izmantojot kvadrātiekavās norādīto apzīmējumu “[ ]”. Izvilktā rinda tiek saglabāta 'rindas' mainīgajā, kuru izdrukās funkcija print ().





Tādējādi cilpa atkārtojas visās DataFrame rindās un izvadā parāda rindu numurus kopā ar kolonnas vērtībām.



2. piemērs: For-Loop izmantošana pār DataFrame kolonnām

Līdzīgi mēs varam izmantot for-cilpu R, lai cilpu pāri norādītā datu rāmja kolonnām. Mēs varam izmantot iepriekšējo kodu, lai veiktu cilpu pār kolonnām, bet mums ir jāizmanto funkcija ncol () for-cilpā. Un otrādi, mums ir visvienkāršākā pieeja DataFrame kolonnu cilpai, izmantojot for-loop. Apsveriet šo R kodu:

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

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

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

for(col in colnames(df)) {

kolonna <- df[[col]]

drukāt (kolonna)

}

Šeit mēs vispirms izveidojam df mainīgo, kur datu.frame() tiek izmantots ar kolonnu ievietošanu. “df” DataFrame satur trīs kolonnas, kurās ir skaitliskās vērtības. Tālāk mēs izmantojam for-cilpu, lai atkārtotu “data” DataFrame kolonnu nosaukumus, izmantojot funkciju colnames(). Katrā iterācijā cilpas mainīgais “col” iegūst pašreizējās kolonnas nosaukumu. Pēc tam iegūtā kolonna tiek saglabāta jaunā mainīgajā, kas ir “kolonna”.

Tādējādi mainīgā “kolonnas” dati izdrukā izvadi šādā konsolē:

3. piemērs: For-Loop izmantošana visā DataFrame

Iepriekšējos piemēros mēs cilpājām kolonnas un rindas, izmantojot attiecīgi for-cilpu. Tagad mēs izmantojam ligzdotās cilpas, lai vienlaikus atkārtotu gan DataFrame rindas, gan kolonnas. R kods ir norādīts tālāk, kur kolonnās un rindās tiek izmantota ligzdotā for-cilpa:

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

names=c('kim', 'Džons', 'Īens', 'Marks'),

location=c('Austrālija', 'Amerika', 'Kanāda', 'Jordānija'),

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

for (rinda 1:nrow(darbinieki)) {

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

print(paste('Rindas indekss', rinda, 'kolonnas nosaukums', kolonna, 'šūnas vērtība', darbinieki[rinda, kolonna]))

}

}

Šeit mēs deklarējam mainīgo “darbinieki”, kurā tiek izsaukts data.frame(), lai iestatītu kolonnas. Vērtības katrā kolonnā ir norādītas, izmantojot vektorus. Pēc tam DataFrame “darbinieku” rindai un kolonnai mēs izmantojam divas ligzdotas for-cilpas, lai atkārtotu datus. Ārējā cilpa atkārtojas pa norādītā DataFrame rindām, izmantojot “1:nrow(employees)”. Katrai rindai iekšējā cilpā tiek izmantots “1:ncol(darbinieki)”, lai atkārtoti veiktu DataFrame kolonnas.

Pēc tam ligzdotajās cilpās ir funkcija print (), kas izvieto funkciju paste (), lai savienotu rindas indeksu, kolonnas indeksu un šūnas vērtību vienā virknē. Darbinieka [rinda, kolonna] izteiksme šeit iegūst vērtību pašreizējā šūnā, kur rinda un kolonna ir attiecīgi esošie rindu un kolonnu indeksi.

Tādējādi konsoles izvade tiek izgūta ar sasaistīto rindas indeksu, kolonnas indeksu un šūnas vērtību vienā virknē.

4. piemērs: For-Loop alternatīvā metode R

For cilpa tagad ir novecojusi R valodā. Tomēr tas nodrošina dažas alternatīvas metodes, kas darbojas tāpat kā for-cilpa un ir ātrākas nekā for-cilpas. Metode ir no 'piemērot saimes' funkcijām, kas darbojas for-loop fonā, lai atkārtotu DataFrames. Apskatīsim šādu R kodu, kurā funkcija sapply () tiek izmantota, lai cilpu pāri DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

pielietot(dfX, summa)

Šeit mēs vispirms izveidojam “dfX” DataFrame, izsaucot funkciju data.frame() ar divām kolonnām, no kurām katra satur skaitliskas vērtības. Pēc tam konsolē izdrukājam oriģinālo “dfX” DataFrame. Nākamajā darbībā mēs izmantojam funkciju sapply(), lai atkārtotu sniegto DataFrame un iegūtu katras kolonnas summu. Funkcija apply() izmanto argumentus “x” un “FUN” kopumā. Šajā gadījumā X ir “dfX” DataFrame, un “FUN” ir summa() funkcija, kas tiek lietota katrai DataFrame kolonnai.

Iterācijas rezultāts, kas tiek sasniegts, izmantojot funkciju sapply(), tiek sasniegts nākamajā ekrānā. DataFrame summas darbības rezultāti tiek parādīti katrai kolonnai. Turklāt mēs varam izmantot arī dažas citas “piemērot saimes” funkcijas for-loop darbībai R:

Secinājums

Mēs strādājam ar for-cilpām, lai atkārtotu DataFrame rindas vai kolonnas, lai veiktu noteiktu darbību. For-cilpa tiek izmantota atsevišķi, lai atkārtotu kolonnas un rindas. Turklāt mēs to izmantojam iterācijai gan datu rāmja kolonnās, gan rindās vienlaikus. Lielāko daļu laika funkciju pielietošana, lai iegūtu vēlamo rezultātu, ir efektīvāka. Pielietošanas funkcijas piemērs ir sniegts pēdējā piemērā, izmantojot for-loop darbību.