R-ohjelmointi.org
Tilastotieteellistä ohjelmointia R-kielellä
droplevels()
Kirjoitin kaksi vuotta sitten esimerkin, että miten data.frame-objektista voi tiputtaa käyttämättömien faktorien tasot pois. Nyt R:n uusimmassa versiossa 2.12 tulee mukana funktio droplevels, jolla tämän saman operaation voi tehdä suoraan.
#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) #Käytetään uutta R 2.12:n funktiota droplevels DF <- droplevels(DF) #Katostaan mitä tuli table(DF$y) #--> ta daa! |
Vastaa