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 levels
argumentu 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 levels
argumentu, 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