Faktorové proměnné

# 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Š") ))

Úlohy

  1. Vytvořte proměnnou dny s vektorem hodnot udávajících počet dnů v jednotlivých 12 měsících nepřestupného kalendářního roku.
  2. Převeďte proměnnou dny na faktorovou proměnnou a výsledek opět uložte pod název dny.
  3. Zobrazte obsah proměnné dny a pozorujte, jakých různých hodnot tato faktorová proměnná nabývá.
  4. Zobrazte funkcí table() počty jednotlivých hodnot v proměnné dny.
  5. Zobrazte tento souhrn graficky pomocí sloupcového grafu barplot.
  6. Vytvořte proměnnou odpovedi s hypotetickými odpověďmi pěti lidí (každý odpověděl jednou). Bude se jednat o řadovou faktorovou proměnnou s hodnotami “nesouhlasím” < “nevím” < “souhlasím”.
  7. Vypište obsah proměnné odpovedi a zkontrolujte, zda je vše v pořádku. Zobrazte souhrnné počty funkcí table().

© 6. 3. 2015 Tomáš Bořil, borilt@gmail.com