Basisvaardigheden in R: Werken met datastructuren
Factor
Uitleg
Een groot verschil tussen een factor gemaakt met de functie factor()
en een vector object in R is dat een factor de categorische waarden opslaat als een vector van gehele getallen in het domein [1, aantal unieke waarden] en een interne vector van karakter waarden (de originele waarden) wordt agebeeld op deze verzameling gehele getallen. De unieke waarden in een factor heten levels. Default worden factor levels voor karakter vectoren in alphabetische volgorde gemaakt bij de optie ordered=TRUE
. Je kunt deze default ordening overschrijven door specificatie van de optie levels=...
. ZIe de voorbeeldsessie aan de rechterkant.
Je kunt een karakter vector ook in een factor converteren via de functie as.factor()
.
Voorbeeldsessie
> diabetes <- c("Type 1", "Type 2",
+ "Type 1", "Type 1") > diabetes <- factor(diabetes) > str(diabetes) Factor w/ 2 levels "Type 1","Type 2": 1 2 1 1 > status <- c("Verbeterd", "Slecht",
+ "Slecht", "Prima") > status <- factor(status, ordered=TRUE) > str(status) Ord.factor w/ 3 levels "Prima"<
"Slecht"< ..: 3 2 2 1
> status <- factor(status, ordered=TRUE, + levels=c("Slecht", "Verbeterd", "Prima")) > str(status) Ord.factor w/ 3 levels "Slecht"<"Verbeterd"<
..: 2 1 1 3
Vier redenen om factoren in R te gebruiken
We sommen de vier belangrijkste redenen op om factoren te gebruiken in plaats van karakter vectoren:
-
Gebruik van belangrijke statistische functies
Sommige statistische functies in R vereisen factoren als invoer. Bijvoorbeeld, de ANOVA-test functie:aov()
. ANOVA is een van de meest gebruikte statistische tests, en weten hoe je de invoer moet verschaffen kan je helpen. -
Automatische benoeming van assen en legenda van grafieken
Plotfuncties in R die grafieken maken zoals lijngrafieken, staafgrafieken en boxplots, zullen automatisch de factor levels gebruiken als labels voor assen en legenda. Dat bespaart je tijd en moeite. Hoe je grafieken maakt (met labels en legendes) is iets wat we aan het einde van dit hoofdstuk zullen bespreken. -
Snel controleren van (lange) vectoren op typefouten
Als je ergens in je vector een typefout hebt gemaakt, is dit een manier om erachter te komen! Heb je een categorie die je niet bedoelde te hebben? Of ben je vergeten om gegevens op te nemen? Mis je bepaalde categorieën? -
Besparing van computergeheugen
Intern worden factoren opgeslagen als een rijtje van gehele getallen, waarbij elk geheel getal een specifieke categorie vertegenwoordigt. Gehele getallen nemen heel weinig geheugen in beslag. Als je grote vectoren hebt, zal het maken van een factor daarvan ruimte besparen op je computer.