U 10. Delu, prodiskutovaćemo aggregate()
komandu za kreiranje sumarne tabele u R. Na osnovu kompleksne datoteke koja uključuje kvalitativne promenljive na nekoliko nivoa želimo kreirati sumarnu tabelu za svaki nivo kvalitativne promenljive. Na primer, naša datoteka može uključivati promenljivu Pol, kvalitativne promenljiva sa dva nivoa, Muško i Žensko. Naša datoteka može uključivati druge kvalitativne promenljive kao što su Etnička Pripadnost, Boja Kose, Tretman koji je primenjen na pacijentu u medicinskoj studiji. U svakom slučaju, zadatak nam može biti izračunavanje sumarnih statistika za svaki nivo kvalitativne promenljive. Upravo to je situacija u kojoj nam aggregate()
komanda može pomoći.
Ovde imamo datoteku pacijenata koji su podvrgnuti medicinskoj terapiji (A, B ili C). Raspolažemo podacima o njihovom polu, masi tela u kg, da li vežbaju, da li puše i da li su se oporavili posle tretmana. Kopirajte i zalepite sledeću datoteku u R.
pacijenti <- structure(list(POL = structure(c(2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L), .Label = c("Ž", "M"), class = "factor"), TERAPIJA = structure(c(1L, 1L, 2L, 1L, 2L, 2L, 3L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 3L), .Label = c("A", "B", "C"), class = "factor"), MASA = c(79L, 87L, 65L, 58L, 72L, 95L, 76L, 56L, 77L, 104L, 67L, 82L, 59L, 68L, 79L, 125L, 83L, 63L, 57L, 84L, 72L, 68L, 65L, 64L, 87L, 92L, 56L), PUSENJE = structure(c(2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L), .Label = c("N", "D"), class = "factor"), VEZBA = structure(c(2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L), .Label = c("N", "D"), class = "factor"), OPORAVAK = structure(c(2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("N", "D"), class = "factor")), .Names = c("POL", "TERAPIJA", "MASA", "PUSENJE", "VEZBA", "OPORAVAK"), class = "data.frame", row.names = c(NA, -27L))
attach(pacijenti)
pacijenti
Sada ćemo da koristimo aggregate()
komandu da bismo kreirali tabelu sa srednjim vrednostima mase tela za dva nivoa promenljive pol. Uočiti koju sintaksu koristimo pri tome. Neprekidna promenljiva postaje prvi argument ove funkcije. Potom kvalitatvna promenljiva se javlja unutar list()
komande. Napokon, funkcija koju želimo primeniti (u ovom slučaju želimo srednju vrednost, tj. mean
) postaje trećim argumentom.
Tabela1 <- aggregate(MASA, list(POL), FUN=mean)
Tabela1
Uočiti da nam aggregate()
komanda ne vraća imena promenljivih. Sada ćemo koristiti aggregate()
komandu da bismo dobili tabelu mase tela za dva nivoa pušača, tj. ljudi koji puše i oni koji ne puše.
Tabela2 <- aggregate(MASA, list(PUSENJE), FUN=mean)
Tabela2
aggregate()
komanda nam omogućava kreiranje kompleksnijih tabela, za nivoe nekoliko kvalitativnih promenljivih istovremeno.
Tabela3 <- aggregate(MASA, list(POL, TERAPIJA), FUN=mean)
Tabela3
Naposletku, kreirajmo tabelu sa maksimalnom masom tela za nivoe pola, pušenja i terapije.
Tabela4 <- aggregate(MASA, list(POL, PUSENJE, TERAPIJA), FUN=max)
Tabela4
Ovo i nije bilo tako teško! 🙂 U blogu 11 razmotrićemo druge tehnike u R.
Vidimo se uskoro!
David
Dodatak: Korišćeni R kodovi
# Kreirati i prikazati sledeću datoteku. pacijenti <- structure(list(POL = structure(c(2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L), .Label = c("Ž", "M"), class = "factor"), TERAPIJA = structure(c(1L, 1L, 2L, 1L, 2L, 2L, 3L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 3L), .Label = c("A", "B", "C"), class = "factor"), MASA = c(79L, 87L, 65L, 58L, 72L, 95L, 76L, 56L, 77L, 104L, 67L, 82L, 59L, 68L, 79L, 125L, 83L, 63L, 57L, 84L, 72L, 68L, 65L, 64L, 87L, 92L, 56L), PUSENJE = structure(c(2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L), .Label = c("N", "D"), class = "factor"), VEZBA = structure(c(2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L), .Label = c("N", "D"), class = "factor"), OPORAVAK = structure(c(2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("N", "D"), class = "factor")), .Names = c("POL", "TERAPIJA", "MASA", "PUSENJE", "VEZBA", "OPORAVAK"), class = "data.frame", row.names = c(NA, -27L)) attach(pacijenti) pacijenti # Kreirati tabelu srednjih vrednosti mase tela za dva nivoa promenljive pola. Tabela1 <- aggregate(MASA, list(POL), FUN=mean) Tabela1 # Kreirati tabelu srednjih vrednosti mase tela za dva nivoa promenljive pušenje. Tabela2 <- aggregate(MASA, list(PUSENJE), FUN=mean) Tabela2 # Kreirati tabelu srednje vrednosti mase tela za dva nivoa promenljive pol i tri nivoa promenljive terapija. Tabela3 <- aggregate(MASA, list(POL, TERAPIJA), FUN=mean) Tabela3 # Kreirati tabelu maksimalne vrednosti mase tela za nivoe promenljivih pol, pušenje i terapija. Tabela4 <- aggregate(MASA, list(POL, PUSENJE, TERAPIJA), FUN=max) Tabela4

Menadžer u New Zealand Institute of Sport i Direktor Sigma Statistics and Research Ltd. Autor knige: R Graph Essentials.