Klasa factor to klasa obiektów będących na poziomie faktorów. Faktory uporządkowane należą do dwóch klas, ordered i factor. Uporządkowane faktory mają uporządkowane poziomy faktorów. Faktory i uporządkowane faktory są stosowane w modelowaniu, dla którego obecne są przynajmniej niektóre dane kategoryczne. Tryb faktorów i faktorów uporządkowanych jest liczbowy, a poziomy są powiązane z liczbami całkowitymi, które zwiększają wartość o jeden. Jednak po wyświetleniu podane są poziomy nominalne. Poziomy faktorów są zazwyczaj domyślnie uporządkowane alfabetycznie lub numerycznie, w zależności od trybu argumentu, ale strona pomocy dla czynnika ostrzega, że poziomy mogą być sortowane za pomocą innej metody. Istnieją trzy funkcje: factor(), as.factor() i is.factor(), a także ordered(), as.ordered() i is.ordered(). Drugi zestaw funkcji zachowuje się tak samo jak pierwszy zestaw w odniesieniu do tworzenia i testowania obiektów czynników, dlatego omawiamy tutaj tylko pierwszy zestaw funkcji. Funkcja factor() tworzy wektor poziomów czynników i powiązaną listę poziomów. Funkcja ma sześć argumentów. Pierwszy argument to obiekt, z którego zostaną wygenerowane czynniki. Argument musi dotyczyć trybu atomowego innego niż raw. Drugi argument to levels i ustawia kolejność poziomów faktorów. Argument levels jest opcjonalny. Trzeci argument to etykiety i przypisuje etykiety do poziomów. Trzeci argument jest opcjonalny i domyślnie przyjmuje wartości elementów obiektu. Czwarty argument to wykluczenie i podaje wszelkie poziomy, które należy wykluczyć w wyniku. Wykluczone poziomy są ustawione na <NA>.Argument jest opcjonalny i domyślnie NA. Piąty argument to ordered, który jest w factor(), ale nie w ordered(). Argument ordered nakazuje factor() utworzenie factora o uporządkowanych poziomach. Funkcja factor() z ordered usatwionym na TRUE daje taki sam wynik jak funkcja ordered(). Szósty argument to nmax i jest opisany jako maksymalna liczba poziomów do użycia. Unikaj używania nmax. Argument nie wydaje się działać i może spowodować awarię R. Konwersja między czynnikami a pierwotnymi danymi jest czasami interesująca. Jeśli etykiety nie zostały przypisane w factor(),
as.mode (levels (fac.obj)) [fac.obj],
zwraca oryginalne wartości obiektu, gdzie mode jest trybem oryginalnego obiektu, a fac.obj jest obiektem czynnikowym. Zauważ, że funkcja as.numeric (fac.obj), zwraca liczby całkowite powiązane z poziomami, nawet jeśli oryginalny obiekt nie był w trybie numerycznym. Jeśli przypisano etykiety, zwykle nie można wyodrębnić oryginalnych danych.
Oto przykład:
> a.log = c(T,T,F,T)
> a.log
[1] TRUE TRUE FALSE TRUE
> afl = factor(a.log)
> afl
[1] TRUE TRUE FALSE TRUE
Levels: FALSE TRUE
> as.logical(levels(afl))[afl]
[1] TRUE TRUE FALSE TRUE
> as.numeric(afl)
[1] 2 2 1 2
> af2 = factor(a.log, levels=c(T,F))
> af2
[1] TRUE TRUE FALSE TRUE
Levels: TRUE FALSE
> as.logical(levels(af2))[af2]
[1] TRUE TRUE FALSE TRUE
> as.numeric(af2)
[1] 1 1 2 1
> af3 =factor(a.log, labels=c(“flab”,”tlab”))
> af3
[1] tlab tlab flab tlab
Levels: flab tlab
> as.logical(levels(af3))[af3]
[1] NA NA NA NA
> as.numeric(af3)
[1] 2 2 1 2
> as.character(levels(af3))[af3]
[1] “tlab” “tlab” “flab” “tlab”
Funkcja as.factor() działa w ten sam sposób, co factor(), ale pobiera tylko jeden argument, obiekt do przekształcenia w czynnik. Funkcja is.factor() sprawdza, czy obiekt jest czynnikiem i zwraca PRAWDA, jeśli tak, a FALSE w przeciwnym razie. Istnieje również powiązana funkcja addNA(). Funkcja tworzy obiekt czynnikowy z poziomem dla brakujących danych (NA). Funkcja przyjmuje dwa argumenty. Pierwszy argument to obiekt, z którego można utworzyć obiekt czynnika klasy. Drugi argument to ifany. Argument ifany jest logiczny i przyjmuje wartość PRAWDA, jeśli dodatkowy poziom jest dodawany tylko wtedy, gdy NA są obecne, a wartość FAŁSZ, jeśli dodatkowy poziom ma być zawsze uwzględniany. Więcej informacji na temat siedmiu funkcji można znaleźć, wprowadzając współczynnik? W monicie R.