Možemo odjednom prekodirati ceo vektor. Da bismo to ilustrovali kreirajmo vektor sa nedostajućim podacima.
A <- c(3, 2, NA, 5, 3, 7, NA, NA, 5, 2, 6)
A
Možemo prekodirati sve nedostajuće podatke nekim drugim brojem, npr. nulom kao što sledi:
A[ is.na(A) ] <- 0
A
Prekodirajmo sve vrednosti manje od 5 na vrednost 99.
A[ A < 5 ] <- 99
A
Međutim, neki zadaci prekodiranja su kompleksniji, posebno u slučaju kada želimo prekodirati kvalitativnu promenljivu ili factor. U takvim slučajevima, možemo prekodirati ma koji vektor sa elementima koji sadrže karaktere u numeričke vrednosti.
pol <- c("MUŠKO","ŽENSKO","ŽENSKO","NEPOZNATO","MUŠKO")
pol
Prekodirajmo muškarce kao 1 i žene kao 2. Sledeća sintaksa prekodiranja je korisna jer funkcioniše u mnogim praktičnim situacijama. Ona uključuje ponovljeno (ugnježdeno) korišćenje komande ifelse()
.
ifelse(pol == "MUŠKO", 1, ifelse(pol == "ŽENSKO", 2, 3))
Elemenat sa nepoznatim polom je kodiran kao 3. Notirajte ovu suntaksu jer je veoma korisna za prekodiranje u R programima.
Drugi primer koristi ovoga puta pravougaoni prostor.
A <- data.frame(Pol = c("Ž", "Ž", "M", "Ž", "B", "M", "M"), Visina = c(154, 167, 178, 145, 169, 183, 176))
A
Namerno smo uveli grešku gde je jedan pol pogrešno klasifikovan kao B
. Ovaj pol će se prekodirati na vrednost 99. Uočiti da je Pol
promenljiva locirana u prvoj koloni, ili A[ ,1]
.
A[ ,1] <- ifelse(A[ ,1] == "M", 1, ifelse(A[,1] == "Ž", 2, 99))
A
Isto pristup možemo koristiti na koliko god nam je potrebno nivoa. Prekodirajmo na četiri različita nivoa. Moj poslednji primer je iz filmova Gospodar prstenova i Hobit (eng. Lord of the Rings and the Hobbit). Lokacija na kojoj je režiser Peter Jackson snimao ove filmove je na kratkom rastojanju od mesta gde ja živim, pa je stoga ovaj primer za mene relevantan.
S <- data.frame(VRSTE = c("ORC", "HOBBIT", "ELF", "TROLL", "ORC", "ORC", "ELF", "HOBBIT"), VISINA = c(194, 127, 178, 195, 149, 183, 176, 134))
S
Sada koristimo ugnježdene ifelse()
komande da prekodiramo Orcs kao 1, Elves kao 2, Hobbits kao 3, i Trolls kao 4.
S[,1] <- ifelse(S[,1] == "ORC", 1, ifelse(S[,1] == "ELF", 2, ifelse(S[,1] == "HOBBIT", 3, ifelse(S[,1] == "TROLL", 4, 99))))
S
Isto tako lako možemo prekodirati nazad na slovne vrednosti.
S[,1] <- ifelse(S[,1] == 1, "ORC", ifelse(S[,1] == 2, "ELF", ifelse(S[,1] == 3, "HOBBIT", ifelse(S[,1] == 4, "TROLL", 99))))
S
Opšti pristup je isti kao pre, ali sada imamo nekoliko dodatnih skupova zagrada. Ovo i nije bilo tako teško! U 21. delu daću nove savete za analizu podataka u R.
Vidimo se kasnije!
David
Dodatak: Korišćeni R kodovi
# Kreirati vektor sa nedostajućim podacima. A <- c(3, 2, NA, 5, 3, 7, NA, NA, 5, 2, 6) A # Prekodirati sve nedostajuće podatke u drugi broj (npr. nula). A[ is.na(A) ] <- 0 A # Prekodirati sve vrednosti manje od 5 na vrednost 99. A[ A < 5 ] <- 99 A # Prekodirati ma koji prostor sa elementima koji sadrže karaktere u numeričke elemente. pol <- c("MUŠKO","ŽENSKO","ŽENSKO","NEPOZNATO","MUŠKO") pol # Prekodirati muškarce kao 1 i žene kao 2 korišćenjem ponovljene ugnježde ne ifelse() komande. ifelse(pol == "MUŠKO", 1, ifelse(pol == "ŽENSKO", 2, 3)) # Drugi primer korišćenjem pravougaone oblasti. A <- data.frame(Pol = c("Ž", "Ž", "M", "Ž", "B", "M", "M"), Visina = c(154, 167, 178, 145, 169, 183, 176)) A # Prekodirati pogrešno klasifikovan pol B na vrednost 99. Promenljiva Pola je locirana u prvoj koloni, ili A[ ,1]. A[ ,1] <- ifelse(A[ ,1] == "M", 1, ifelse(A[,1] == "Ž", 2, 99)) A # Još jedan primer iz filmova Gospodar prstenova i Hobit. S <- data.frame(VRSTE = c("ORC", "HOBBIT", "ELF", "TROLL", "ORC", "ORC", "ELF", "HOBBIT"), VISINA = c(194, 127, 178, 195, 149, 183, 176, 134)) S # Koristiti ugnježdenu ifelse komandu da se prekodira Orcs kao 1, Elves kao 2, Hobbits kao 3, i Trolls kao 4. S[,1] <- ifelse(S[,1] == "ORC", 1, ifelse(S[,1] == "ELF", 2, ifelse(S[,1] == "HOBBIT", 3, ifelse(S[,1] == "TROLL", 4, 99)))) S # Prekodirati nazad na slovne oznake. S[,1] <- ifelse(S[,1] == 1, "ORC", ifelse(S[,1] == 2, "ELF", ifelse(S[,1] == 3, "HOBBIT", ifelse(S[,1] == 4, "TROLL", 99)))) S
Menadžer u New Zealand Institute of Sport i Direktor Sigma Statistics and Research Ltd. Autor knige: R Graph Essentials.