Nevajadzīgie faktora līmeņi

Pārlapojot stackoverflow.com ierakstus par R jautājumiem, uzdūros problēmai, kas atsevišķos gadījumos “traucē dzīvot” arī man. Iedomāsimies, ka mums ir tabula, kurā vienā kolonnā ir teksti un otrā ir skaitļi. Ja to īpaši nemainīsim, tad automātiski tekstu kolonna tiks uzskatīta par faktoru ar tik līmeņiem, cik ir unikālo vērtību. Iespējamos faktora līmeņus varam apskatīt ar funkciju levels().

tabula <- data.frame(burti = c("a","b","c","d","e"),skaitli = 1:5)
tabula
##   burti skaitli
## 1     a       1
## 2     b       2
## 3     c       3
## 4     d       4
## 5     e       5
levels(tabula$burti)
## NULL

Reizēm no lielākas tabulas vajag izveidot mazāku tabulu, ko, piemēram, izdaram ar funkciju subset(). Jauniegūtajā tabulā kolonnā burti ir tikai trīs iespējamās vērtības: “a”, “b” un “c”. Ja tagad apskatam iespējamos faktora līmeņus jaunajā tabulā, tad redzam, ka joprojām tur ir piecas iespējamās vērtības kā sākotnējā tabulā. R ir saglabājis nemainīgus šos līmeņus ar ideju, ka tāda vērtība ir iespējama, bet tās tikai nav Jūsu konkrētajā mazajā tabulā.

maza.tabula <- subset(tabula, skaitli <= 3)
maza.tabula
##   burti skaitli
## 1     a       1
## 2     b       2
## 3     c       3
levels(maza.tabula$burti)
## NULL

Būs situācijas, kurās ir labi, ka faktora līmeņi ir saglabājušies. Bet ko darīt, ja vēlamies tikt vaļā no šiem neizmantotajiem līmeņiem. Viens variants ir izmantot funkciju droplevels(), kuru attiecina uz visu jauno tabulu. Ar šīs funkcijas palīdzību liekie faktoru līmeņu tiks noņemti visām kolonnām, uz kurām tas attieksies.

maza.tabula <- droplevels(maza.tabula)
levels(maza.tabula$burti)
## NULL

Ja īpaši ir nepieciešams noņemt līmeņus tikai kādai konkrētai kolonnai, tad šo kolonnu vajag it kā no jauna izveidot ar funkciju factor().

maza.tabula2 <- subset(tabula, skaitli <= 3)
maza.tabula2$burti <- factor(maza.tabula2$burti)
levels(maza.tabula2$burti)
## [1] "a" "b" "c"
Didzis Elferts
Didzis Elferts
Datu zinātnieks, vadošais pētnieks

Manas zinātniskās intereses saistītas ar statistiku un programmu R.