Р -факторы
Факторы
Факторы используются для классификации данных. Примеры факторов:
- Демография: мужчина/женщина
- Музыка: Рок, Поп, Классика, Джаз
- Тренировка: сила, выносливость
Чтобы создать фактор, используйте 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