Het "factor"-datatype in R
Naast de datatypes character
, numeric
en boolean
is er ook het factor
datatype. Dit datatype kun je op een eenvoudige manier beschrijven door te zeggen dat het een datatype is die qua eigenschappen tussen de numeric
en character
datatypen in zit. Het kan namelijk numerieke en character waarde bevatten, en er kan niet mee worden gerekend. Als we het factor
-datatype beschrijven door vanuit de character
-datatype te redeneren, kun je zeggen dat de factor
-datatype een character
-datatype is met vooraf gedefinieerde niveaus. Dit wordt aan de hand van een voorbeeld uitgelegd. Tijdens deze uitleg wordt gelijk geleerd hoe je handmatig een data frame kunt maken dooR-vectoren samen te stellen.
Het artikel, [5] Factor variables, (Bruin, 2006) geeft een uitstekende uitleg over
factor
variabelen in R.
Handmatig data frames maken
We maken twee tabellen, in R dus data frames
, een (1) data frame dat het salaris per persoon weergeeft en (2) een data frame die het aantal personen op kantoor weergeeft.
Om de data frames
te maken, stellen we eerst vectoren
op. Deze vectoren
stellen we samen als data frames
.
# Een vector maken met de namen van 10 personen
personen <- c("Jack","Rosemarijn","Arie","Marco","Koen","Noah",
"Helga","Francis","Henk","Winston")
#personen is een character vector
class(personen)
## [1] "character"
# Een vector maken met 10 salarissen. Let op! Om de juiste salarissen bij
# de bijbehorende personen te
# houden, moeten de salarissen in dezelfde volgorde als de personen-vector
# worden gedefinieerd.
salarissen <- c(7000,2800,5000,2000,3600,5000,7000,3100,6000,2000)
#salarissen is een numeric vector
class(salarissen)
## [1] "numeric"
Zoals we in de output kunnen zien, hebben de vectoren personen
en salarissen
respectievelijk de datatypen character
en numeric
. Nu we de twee vectoren hebben gedefinieerd, kunnen we deze samenvoegen tot een data frame. Dit doen we eenvoudig met de data.frame()
functie.
#De salarisPersonen dataframe maken
salarisPersonen <- data.frame(personen,salarissen)
salarisPersonen
## personen salarissen
## 1 Jack 7000
## 2 Rosemarijn 2800
## 3 Arie 5000
## 4 Marco 2000
## 5 Koen 3600
## 6 Noah 5000
## 7 Helga 7000
## 8 Francis 3100
## 9 Henk 6000
## 10 Winston 2000
De data frame ziet er keurig uit.
Laten we de datatypes van de data frame bekijken met de class
functie. De verwachting is dat personen
de character
datatype heeft en salarissen
de numeric
datatype.
str(salarisPersonen)
## 'data.frame': 10 obs. of 2 variables:
## $ personen : Factor w/ 10 levels "Arie","Francis",..: 5 9 1 7 6 8 3 2 4 10
## $ salarissen: num 7000 2800 5000 2000 3600 5000 7000 3100 6000 2000
Echter zien we dat personen
in de kolom als data frame nu een factor
is. We komen later hier op terug.