Ga naar hoofdinhoud

Factorniveaus in R

Deze tutorial gebruikt cursusmateriaal uit DataCamp's gratis Intro to R-cursus en laat je oefenen met factoren.
Bijgewerkt 2 okt 2026  · 6 min lezen

Verken met AI

ChatGPTClaudePerplexity

Als je onze gratis Intro to R-cursus wilt volgen, hier is de link.

Factorniveaus

Wanneer je een dataset krijgt, zie je vaak dat deze factoren bevat met specifieke factorniveaus. Soms wil je de namen van deze niveaus aanpassen voor duidelijkheid of andere redenen. R laat je dit doen met de functie levels():

levels(factor_vector) <- c("name1", "name2",...)

Een goed voorbeeld is de ruwe data die je binnenkrijgt via een enquête. Een veelgestelde vraag in elke vragenlijst is het geslacht van de respondent. Hier zijn voor de eenvoud slechts twee categorieën vastgelegd, "M" en "F". (Voor enquêtegegevens heb je meestal meer categorieën nodig; in alle gevallen gebruik je een factor om de categorische data op te slaan.)

survey_vector <- c("M", "F", "F", "M", "M")

Het geslacht noteren met de afkortingen "M" en "F" kan handig zijn als je gegevens met pen en papier verzamelt, maar kan voor verwarring zorgen bij het analyseren. Op dat moment wil je de factorniveaus vaak wijzigen naar "Male" en "Female" in plaats van "M" en "F" voor de duidelijkheid.

Let op: de volgorde waarmee je de niveaus toewijst is belangrijk. Als je levels(factor_survey_vector) typt, zie je dat de uitvoer [1] "F" "M" is. Als je de niveaus van de factor niet specificeert bij het maken van de vector, wijst R ze automatisch alfabetisch toe. Om "F" correct aan "Female" en "M" aan "Male" te koppelen, moeten de niveaus in deze volgorde worden ingesteld op c("Female", "Male").

Instructies

  • Bekijk de code die een factorvector opbouwt uit survey_vector. Je gebruikt factor_survey_vector in de volgende opdracht.
  • Wijzig de factorniveaus van factor_survey_vector naar c("Female", "Male"). Let hier op de volgorde van de vectorelementen.
# no pec survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- factor_survey_vector # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector msg = "Do not change the definition of survey_vector!" test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) msg = "Do not change or remove the code to create the factor vector." test_function("factor", "x", not_called_msg = msg, incorrect_msg = msg) # MC-note: ideally would want to test assign operator <-, and have it highlight whole line. # MC-note: or negate this test_student_typed, to highlight where they type this incorrect phrase # test_student_typed('c("Male", "Female")') test_object("factor_survey_vector", eq_condition = "equal", incorrect_msg = paste("Did you assign the correct factor levels to factor_survey_vector? Use levels(factor_survey_vector) <- c(\"Female\", \"Male\"). Remember that R is case sensitive!")) success_msg("Wonderful! Proceed to the next exercise.")

Let op de volgorde waarin je de factorniveaus moet invoeren. Tip: kijk naar de volgorde waarin de niveaus worden getoond wanneer je levels(factor_survey_vector) typt.

Een factor samenvatten

Na het afronden van deze cursus wordt een van je favoriete functies in R summary(). Deze geeft je snel een overzicht van de inhoud van een variabele:

summary(my_var)

Terug naar onze enquête: je wilt weten hoeveel "Male"-antwoorden je in je onderzoek hebt, en hoeveel "Female"-antwoorden. De functie summary() geeft je het antwoord op deze vraag.

Instructies

Vraag een summary() op van de survey_vector en factor_survey_vector. Interpreteer de resultaten van beide vectors. Zijn ze in dit geval allebei even nuttig?

# Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector # Generate summary for factor_survey_vector # Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector summary(survey_vector) # Generate summary for factor_survey_vector summary(factor_survey_vector) msg = "Do not change anything about the first few lines that define survey_vector and factor_survey_vector." test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) test_object("factor_survey_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg) msg <- "Have you correctly used summary() to generate a summary for %s?" test_output_contains("summary(survey_vector)", incorrect_msg = sprintf(msg, "survey_vector")) test_output_contains("summary(factor_survey_vector)", incorrect_msg = sprintf(msg, "factor_survey_vector")) success_msg("Nice! Have a look at the output. The fact that you identified \"Male\" and \"Female\" as factor levels in factor_survey_vector enables R to show the number of elements for each category.")

Roep de functie summary() aan voor zowel survey_vector als factor_survey_vector, zo eenvoudig is het!

Geordende factoren

Aangezien "Male" en "Female" ongeordende (of nominale) factorniveaus zijn, geeft R een waarschuwing dat de groter-dan-operator geen betekenis heeft. Zoals eerder gezien, koppelt R voor zulke factoren een gelijke waarde aan de niveaus.

Maar dat is niet altijd zo! Soms werk je ook met factoren die wél een natuurlijke ordening tussen categorieën hebben. In dat geval moeten we ervoor zorgen dat we deze informatie aan R doorgeven...

Stel dat je een onderzoeksteam van vijf data-analisten leidt en hun prestaties wilt evalueren. Hiervoor houd je hun snelheid bij, beoordeel je elke analist als "slow", "medium" of "fast", en sla je de resultaten op in speed_vector.

Instructies

Zet als eerste stap in speed_vector een vector met 5 waarden, één voor elke analist. Elke waarde moet "slow", "medium" of "fast" zijn. Gebruik onderstaande lijst:

  • Analist 1 is medium,
  • Analist 2 is slow,
  • Analist 3 is slow,
  • Analist 4 is medium en
  • Analist 5 is fast.

Je hoeft nog niet te specificeren dat dit factoren zijn.

# Create speed_vector speed_vector <- # Create speed_vector speed_vector <- c("medium", "slow", "slow", "medium", "fast") test_object("speed_vector", incorrect_msg = "speed_vector should be a vector with 5 entries, one for each analyst's speed rating. Don't use capital letters; R is case sensitive!") success_msg("A job well done! Continue to the next exercise.")

Wijs aan speed_vector een vector toe met de tekenreeksen "slow", "medium" of "fast".


Als je meer uit deze cursus wilt halen, hier is de link.

Bekijk ook onze Factors in R-tutorial.

Onderwerpen
R
Data Science
Data-analyse

R-cursussen

{count, plural, one {Cursus} other {Cursussen}}

Introductie tot R

{hours} uur
3.1M
Beheers de basis van data-analyse in R, inclusief vectors, lists en data frames, en oefen met echte datasets.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

{count, plural, one {blog} other {blogs}}

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken