Brz početak rada sa R: Podskupovi (9. Deo)

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