Het factor-datatype definiëren

Als volgorde in een character datatype echter wel belangrijk is, maken we gebruik van de factor datatype. Een situatie waarbij dit handig is, is bijvoorbeeld namen van dagen en maanden. Laten we kijken wat de verschillen zijn als we hierbij geen gebruik maken van de factor datatype en wanneer we dat wel doen.

#character
dagen1 <- c("maandag","dinsdag","woensdag","donderdag",
           "vrijdag","zaterdag","zondag")

#factor
dagen2 <- factor(dagen1,levels=c("maandag","dinsdag","woensdag",
                                "donderdag","vrijdag","zaterdag",
                                "zondag"))

#numeric

aanwezigen <- c(9,8,6,9,3,1,0)

# De dataframe maken
bezetting <- data.frame(dagen1,dagen2,aanwezigen)

# De data frame laten zien
bezetting
##      dagen1    dagen2 aanwezigen
## 1   maandag   maandag          9
## 2   dinsdag   dinsdag          8
## 3  woensdag  woensdag          6
## 4 donderdag donderdag          9
## 5   vrijdag   vrijdag          3
## 6  zaterdag  zaterdag          1
## 7    zondag    zondag          0
# Eigenschappen van de data frame
str(bezetting)
## 'data.frame':    7 obs. of  3 variables:
##  $ dagen1    : Factor w/ 7 levels "dinsdag","donderdag",..: 3 1 5 2 4 6 7
##  $ dagen2    : Factor w/ 7 levels "maandag","dinsdag",..: 1 2 3 4 5 6 7
##  $ aanwezigen: num  9 8 6 9 3 1 0

We kunnen bij de laatste output al zien (achter de str() functie dat voor de kolom dagen1 de volgorde er niet helemaal goed uitziet. Dit is bij dagen2 echter wel zo. Dit komt omdat we bij dagen2 expliciet hebben aangeven dat we een factor vector willen hebben en daar duidelijk de volgorde in aangeven. Dit hebben we bij dagen1 niet gedaan. R kiest hiervoor zelf de volgorde, die in dit geval alfabetisch is. Om dit nog duidelijker te demonstreren, laten we de twee vectoren nog een keer gesorteerd zien:

# de character vector 'dagen1' gesorteerd weergeven
sort(dagen1, decreasing = FALSE)
## [1] "dinsdag"   "donderdag" "maandag"   "vrijdag"   "woensdag"  "zaterdag" 
## [7] "zondag"
# de character vector 'dagen2' gesorteerd weergeven
sort(dagen2, decreasing = FALSE)
## [1] maandag   dinsdag   woensdag  donderdag vrijdag   zaterdag  zondag   
## Levels: maandag dinsdag woensdag donderdag vrijdag zaterdag zondag

Zoals je kunt zien, wordt de dagen1 vector simpelweg weergegeven in alfabetische volgorde. De dagen2 vector wordt echter weergegeven in de goede volgorde van de dagen in de week, zoals we dat bij de factor vector gedefinieerd hebben.

Voor de duidelijkheid geeft R ook het aantal niveaus aan in de factor vector. Dit kun je ook individueel weergeven met de levels() functie:

levels(dagen2)
## [1] "maandag"   "dinsdag"   "woensdag"  "donderdag" "vrijdag"   "zaterdag" 
## [7] "zondag"

results matching ""

    No results matching ""