Р -факторы


Факторы

Факторы используются для классификации данных. Примеры факторов:

  • Демография: мужчина/женщина
  • Музыка: Рок, Поп, Классика, Джаз
  • Тренировка: сила, выносливость

Чтобы создать фактор, используйте factor()функцию и добавьте вектор в качестве аргумента:

Пример

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

# Print the factor
music_genre

Результат:

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

Из приведенного выше примера видно, что фактор имеет четыре уровня (категории): Классика, Джаз, Поп и Рок.

Чтобы распечатать только уровни, используйте levels()функцию:

Пример

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

levels(music_genre)

Результат:

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

Вы также можете установить уровни, добавив levelsаргумент внутри factor()функции:

Пример

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

levels(music_genre)

Результат:

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

Длина фактора

Используйте length()функцию, чтобы узнать, сколько элементов в факторе:

Пример

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

length(music_genre)

Результат:

[1] 8


Факторы доступа

Чтобы получить доступ к элементам в факторе, обратитесь к номеру индекса, используя []скобки:

Пример

Доступ к третьему элементу:

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

music_genre[3]

Результат:

[1] Classic
Levels: Classic Jazz Pop Rock

Изменить значение предмета

Чтобы изменить значение определенного элемента, обратитесь к номеру индекса:

Пример

Измените значение третьего элемента:

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

music_genre[3] <- "Pop"

music_genre[3]

Результат:

[1] Pop
Levels: Classic Jazz Pop Rock

Обратите внимание, что вы не можете изменить значение определенного элемента, если он еще не указан в факторе. Следующий пример вызовет ошибку:

Пример

Попытка изменить значение третьего элемента ("Классический") на элемент, который не существует/не предопределен ("Опера"):

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

music_genre[3] <- "Opera"

music_genre[3]

Результат:

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

Однако, если вы уже указали его внутри levelsаргумента, он будет работать:

Пример

Измените значение третьего элемента:

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]

Результат:

[1] Opera
Levels: Classic Jazz Pop Rock Opera