U 9. Delu ćemo razmotriti kako dobiti podskupove u R. Posmotrimo primer sumarne tabele sa podacima o turistima iz različitih zemalja, prema broju njihove dece i suma novca koju su potrošili na svoj odmor. Kopirati i zalepiti sledeću strukturu podataka u R.
A <- structure(list(NACIJE = structure(c(3L, 3L, 3L, 3L, 1L, 3L, 2L, 3L, 1L, 3L, 3L, 1L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 1L, 1L, 3L, 1L, 2L), .Label = c("KINA", "NEMAČKA", "FRANCUSKA"), class = "factor"),POL = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L), .Label = c("Ž", "M"), class = "factor"), DECA = c(2L, 1L, 3L, 2L, 2L, 3L, 1L, 0L, 1L, 0L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 2L, 1L, 2L, 4L, 2L, 5L, 1L), POTROSITI = c(8500L, 23000L, 4000L, 9800L, 2200L, 4800L, 12300L, 8000L, 7100L, 10000L, 7800L, 7100L, 7900L, 7000L, 14200L, 11000L, 7900L, 2300L, 7000L, 8800L, 7500L, 15300L, 8000L, 7900L)), .Names = c("NACIJE", "POL", "DECA", "NOVAC"), class = "data.frame", row.names = c(NA, -24L))
A
Opšta forma sintakse koju ćemo koristiti je data kao:
Z <- A[ A[ , colnum ] == val, ]
Uočiti da imamo dva skupa uglastih zagrada i zarez neposredno pre druge uglaste zagrade. Z
daje sve redove za koje indicator u koloni colnum
ima vrednost val
. To možemo izraziti na sledeći način: “Z
je skup redova u A
takav da elementi u koloni colnum
ima vrednost val
”. OK. Sada možemo odrediti podskup za ženske osobe.
FE <- A[ A[, 2] == "Ž", ]
FE
Međutim, jednostavnije se ova komanda može napisati korišćenjem subset()
funkcije:
subset(A, POL == "Ž")
Izdvojmo sada sve redove u kojima treća kolona (broj dece) ima vrednost manju od 2.
C1 <- A[ A[, 3] < 2, ]
C1
Međutim, jednostavnije se ova komanda može napisati korišćenjem subset()
funkcije:
C1 <- subset(A, DECA < 2)
C1
Naposletku, izdvojmo sve redove za ženske osobe sa manje od dva deteta.
F1 <- A[ A[, 2] == "Ž" & A[, 3] < 2, ]
F1
Ponovo, jednostavnije se ova komanda može napisati korišćenjem subset()
funkcije:
F1 <- subset(A, POL == "Ž" & DECA < 2)
F1
Čini se da ovo nije bilo tako teško! U blogu 10 razmotrićemo neke druge analitičke tehnike u R.
Vidimo se uskoro!
David
Dodatak: Korišćeni R kodovi
# Kreirati i prikazati sledeću strukturu podataka. A <- structure(list(NACIJE = structure(c(3L, 3L, 3L, 3L, 1L, 3L, 2L, 3L, 1L, 3L, 3L, 1L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 1L, 1L, 3L, 1L, 2L), .Label = c("KINA", "NEMAČKA", "FRANCUSKA"), class = "factor"),POL = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L), .Label = c("Ž", "M"), class = "factor"), DECA = c(2L, 1L, 3L, 2L, 2L, 3L, 1L, 0L, 1L, 0L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 2L, 1L, 2L, 4L, 2L, 5L, 1L), POTROSITI = c(8500L, 23000L, 4000L, 9800L, 2200L, 4800L, 12300L, 8000L, 7100L, 10000L, 7800L, 7100L, 7900L, 7000L, 14200L, 11000L, 7900L, 2300L, 7000L, 8800L, 7500L, 15300L, 8000L, 7900L)), .Names = c("NACIJE", "POL", "DECA", "NOVAC"), class = "data.frame", row.names = c(NA, -24L)) A # Opšta forma sintakse koju ćemo koristiti. Z <- A[ A[ , colnum ] == val, ] # Izdvojiti i prikazati podatke za ženske osobe. FE <- A[ A[, 2] == "Ž", ] FE # Alternativno, isti rezultat se može dobiti korišćenjem subset() komande. subset(A, POL == "Ž") # Izdvojiti i prikazati sve redove u kojima su elementi u trećoj koloni (broj dece) manji od 2. C1 <- A[ A[, 3] < 2, ] C1 # Alternativno, isti rezultat se može dobiti korišćenjem subset() komande. C1 <- subset(A, DECA < 2) C1 # Izdvojiti i prikazati sve redove za ženske osobe sa brojem dece manjim od 2. F1 <- A[ A[, 2] == "Ž" & A[, 3] < 2, ] F1 # Alternativno, isti rezultat se može dobiti korišćenjem subset() komande. F1 <- subset(A, POL == "F" & DECA < 2) F1

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