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

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *