
Faktory
Faktory jsou speciálním případem vektorů s nominálními nebo ordinálními daty. Jedná se o datovou strukturu, která umožňuje přiřadit smysluplné názvy jednotlivým kategoriím. Na první pohled vypadají faktory podobně jako numerické a textové vektory, ale není tomu tak. Faktory v sobě navíc obsahují informaci Levels - jedná se o konečnou množinu hodnot, kterých kategorická proměnná může nabývat. Jednotlivé prvky Levels jsou uspořádány podle jejich typu (numericky nebo abecedně), hodnoty NA zde ovšem nejsou zahrnuty.
> factor(c("kocka", "kun", NA, "pes", "kocka", "pes", "pes")) [1] kocka kun <NA> pes kocka pes pes Levels: kocka kun pes |
Poznámka. Je důležité si uvědomit, že prvky numerického faktoru nejsou interpretovány jako numerické hodnoty:
> mean(factor(1:5)) funkce mean slouží k výpočtu průměru} [1] NA Warning message: In mean.default(factor(1:5)) : argument is not numeric or logical: returning NA |
Funkce factor() má několik volitelných argumentů. Argument levels může být použit k definování úrovní (Levels) faktoru. Např. můžeme vytvořit faktor i s úrovní, která se mezi daty nevyskytuje:
> factor(c(2, 3, 1, NA, 3, 2), levels=1:4) hodnoty NA nejsou do Levels vypisovány
[1] 2 3 1 <NA> 3 2
Levels: 1 2 3 4
|
Argument levels rovněž může sloužit ke změně pořadí prvků úrovní:
> factor(c(2, 3, 1, NA, 3, 2), levels=c(1, 3, 2, 4)) Levels: 1 3 2 4 |
Argument labels se používá k definici popisků:
> factor(c(0, 1, 1, 0, 1), labels=c("nepritomen", "pritomen")) Levels: nepritomen pritomen} |
Argument exclude ignoruje vybrané prvky, tyto prvky jsou nahrazeny hodnotami NA
> factor(c(2, 3, 1, NA, 3, 2), exclude=3)
Levels: 1 2 <NA> Levels: 1 2 3 <NA> |
Argument ordered=TRUE slouží k seřazení úrovní faktoru. Jediným rozdílem na výstupu je zobrazení porovnávacího operátoru < mezi jednotlivými úrovněmi faktoru. Tuto vlastnost můžeme použít např. při porovnávání jednotlivých prvků.
> (velikost <- factor(c(3, 1, 5, 4, 3, 2, 4), labels=c("mravenec", "hlemyzd", "koza", "slon",
+ "zirafa")))
Levels: mravenec hlemyzd koza slon zirafa
+ "zirafa"), ordered=TRUE))
Levels: mravenec < hlemyzd < koza < slon < zirafa |