R Faktory


Faktory

Pro kategorizaci dat se používají faktory. Příklady faktorů jsou:

  • Demografie: Muž/Žena
  • Hudba: Rock, Pop, Classic, Jazz
  • Trénink: Síla, výdrž

Chcete-li vytvořit faktor, použijte factor()funkci a přidejte vektor jako argument:

Příklad

# Create a factor
music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

# Print the factor
music_genre

Výsledek:

[1] Jazz    Rock    Classic Classic Pop     Jazz    Rock    Jazz
Levels: Classic Jazz Pop Rock

Z výše uvedeného příkladu můžete vidět, že faktor má čtyři úrovně (kategorie): Classic, Jazz, Pop a Rock.

Chcete-li vytisknout pouze úrovně, použijte levels()funkci:

Příklad

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

levels(music_genre)

Výsledek:

[1] "Classic" "Jazz"    "Pop"     "Rock"   

Úrovně můžete také nastavit přidáním levelsargumentu do factor()funkce:

Příklad

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"), levels = c("Classic", "Jazz", "Pop", "Rock", "Other"))

levels(music_genre)

Výsledek:

[1] "Classic" "Jazz"    "Pop"     "Rock"    "Other"

Délka faktoru

Pomocí length()funkce zjistíte, kolik položek je ve faktoru:

Příklad

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

length(music_genre)

Výsledek:

[1] 8

Přístupové faktory

Chcete-li získat přístup k položkám ve faktoru, podívejte se na číslo indexu pomocí []hranatých závorek:

Příklad

Přístup ke třetí položce:

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

music_genre[3]

Výsledek:

[1] Classic
Levels: Classic Jazz Pop Rock

Změnit hodnotu položky

Chcete-li změnit hodnotu konkrétní položky, podívejte se na číslo indexu:

Příklad

Změňte hodnotu třetí položky:

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

music_genre[3] <- "Pop"

music_genre[3]

Výsledek:

[1] Pop
Levels: Classic Jazz Pop Rock

Pamatujte, že nemůžete změnit hodnotu konkrétní položky, pokud již není specifikována ve faktoru. Následující příklad způsobí chybu:

Příklad

Pokus o změnu hodnoty třetí položky ("Classic") na položku, která neexistuje/není předdefinovaná ("Opera"):

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"))

music_genre[3] <- "Opera"

music_genre[3]

Výsledek:

Warning message:
In `[<-.factor`(`*tmp*`, 3, value = "Opera") :
  invalid factor level, NA generated

Pokud jste to však již zadali v levelsargumentu, bude to fungovat:

Příklad

Změňte hodnotu třetí položky:

music_genre <- factor(c("Jazz", "Rock", "Classic", "Classic", "Pop", "Jazz", "Rock", "Jazz"), levels = c("Classic", "Jazz", "Pop", "Rock", "Opera"))

music_genre[3] <- "Opera"

music_genre[3]

Výsledek:

[1] Opera
Levels: Classic Jazz Pop Rock Opera