R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Faktorin tasojen pudotus

Kokemattomalle R:n käyttäjälle faktorin tasojen säilyminen taulukossa rajauksen jälkeen saattaa aiheuttaa harmaita hiuksia. R ei oletusarvoisesti poista sellaisten faktorien tasoja, jotka rajautuvat rajatun aineiston ulkopuolelle. Tästä ominaisuudesta pääsee kuitenkin eroon, ja se onnistuu mm. alla esitellyllä funktiolla.

#Tehdään taulukko eli data.frame
DF <- data.frame(x = factor(rep(1:5, length.out=50)), 
y = factor(rep(1:2, length.out=50)),  z= rnorm(50))
 
#Katostaan, että mitä se sisältää
str(DF)
 
#Rajataan aineistoa: otetaan vain ne rivit, joissa y = 2
DF <- subset(DF, y == 2)
 
#Katsotaan y:n arvojen lukumäärä rajatussa aineistossa
table(DF$y)
#--> huomataan, että faktorin y:n taso 1 on mukana, 
#vaikka siinä ei havaintoja DF:ssä.
 
#Tehdään funktio, jota voidaan käyttää koko aineistoon
#Funktio tiputtaa kaikista faktoreista käyttämättömät tasot pois
pudota <- function(dat){
  dat[] <- lapply(dat, function(x) x[,drop=TRUE])
  return(dat)
}
 
#Pudotetaan tasot
DF <- pudota(DF)
 
#Katostaan mitä tuli
table(DF$y)
#--> ta daa!