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.

results matching ""

    No results matching ""