# Obyčejný vektor řetězců
pohlavi <- c("muž", "muž", "žena", "muž", "žena") # Pohlaví respondentů dotazníku
Zatímco výše definovaný vektor pohlavi obsahuje seznam libovolných znakových řetězců bez další specifikace, spoustukrát se nám hodí upřesnit, že se jedná o výčet jen několika možných povolených hodnot kategorické (nominální) proměnné (faktoru), slouží k tomu funkce factor()
# Převod na faktorovou proměnnou
pohlavi2 <- factor(pohlavi)
Srovnejme výpis obou proměnných
pohlavi # výstupem je jen vektor řetězců
## [1] "muž" "muž" "žena" "muž" "žena"
pohlavi2 # výstupem je kromě hodnot také informace, že proměnná nabývá dvou úrovní (Levels: muž žena)
## [1] muž muž žena muž žena
## Levels: muž žena
Zjistit typ jakékoliv proměnné můžeme funkcí class
class(pohlavi)
## [1] "character"
class(pohlavi2)
## [1] "factor"
V některých případech se hodí dát najevo, že faktory lze řadit podle velikosti (tzv. řadová, ordinální proměnná)
vzdelani <- factor(c("VŠ", "SŠ", "ZŠ", "SŠ", "VŠ", "VŠ"), ordered = TRUE, levels = c("ZŠ", "SŠ", "VŠ"))
vzdelani # je vidět, že vektor uchovává i informaci o řazení úrovní dle velikosti
## [1] VŠ SŠ ZŠ SŠ VŠ VŠ
## Levels: ZŠ < SŠ < VŠ
class(vzdelani)
## [1] "ordered" "factor"
Funkce table() za nás spočítá počet položek v každé kategorii.
table(vzdelani)
## vzdelani
## ZŠ SŠ VŠ
## 1 2 3
table(pohlavi2)
## pohlavi2
## muž žena
## 3 2
table(pohlavi) # a hodnoty kategorií si domyslí i v případě obyčejných řetězcových vektorů
## pohlavi
## muž žena
## 3 2
Proč si tyto počty rovnou nevykreslit?
barplot(table(vzdelani))
Jak bylo u funkce table vidět, není vždy nutné říkat, že se jedná o faktorovou proměnnou. Ale většinou se to vyplatí, protože je to užitečná informace navíc a funkce se pak chovají k našim datům “slušněji”. Například následující obdobný obrázek bez specifikace faktorové proměnné si pořadí přehází podle své nálady, nemáme to pod kontrolou.
barplot(table( c("VŠ", "SŠ", "ZŠ", "SŠ", "VŠ", "VŠ") ))
© 6. 3. 2015 Tomáš Bořil, borilt@gmail.com