Ga naar hoofdinhoud

Data sorteren in R: een complete tutorial

Leer hoe je vectors, data frames en meer sorteert in R met order(), sort() en dplyr's arrange(), met praktische voorbeelden.
Bijgewerkt 2 okt 2026  · 6 min lezen

Verken met AI

ChatGPTClaudePerplexity

R biedt verschillende manieren om data te sorteren in oplopende of aflopende volgorde; data-analisten en data scientists gebruiken order(), sort() en pakketten zoals dplyr om te sorteren afhankelijk van de structuur van de data.

TL;DR

  • Gebruik sort() om een vector direct te sorteren en de gesorteerde waarden terug te krijgen
  • Gebruik order() om de indexen te krijgen die een vector zouden sorteren—ideaal voor het sorteren van data frames
  • Gebruik dplyr::arrange() voor een moderne, leesbare aanpak om data frames te sorteren
  • Ga om met NA-waarden met de parameter na.last (TRUE zet NA’s achteraan, FALSE vooraan)
  • Sorteer in aflopende volgorde met decreasing = TRUE of door een minteken te gebruiken

order() kan vectors en matrices sorteren, en ook een data frame kan met behulp hiervan in oplopende en aflopende volgorde gesorteerd worden, zoals te zien is in de laatste sectie van deze tutorial.

Syntax of order()

The sort() function

Voordat we in order() duiken, kijken we naar de eenvoudigere functie sort(). Terwijl order() indexen teruggeeft, geeft sort() direct de gesorteerde waarden terug:

# Create a vector
values <- c(4, 12, 6, 7, 2, 9, 5)

# sort() returns the sorted values directly
sort(values)
[1]  2  4  5  6  7  9 12

Het belangrijkste verschil is dat sort() je de daadwerkelijke gesorteerde waarden geeft, terwijl order() de posities teruggeeft. Daardoor is order() handiger voor het sorteren van data frames, zoals we later zullen zien.

Syntax of order()

De syntax van order() staat hieronder:

order(x, decreasing = TRUE or FALSE, na.last = TRUE or FALSE, method = c("auto", "shell", "quick", "radix"))

De argumenten van order() betekenen het volgende:

  • x: data frames, matrices of vectors
  • decreasing: booleaanse waarde; TRUE sorteert aflopend, FALSE sorteert oplopend.
  • na.last: booleaanse waarde; TRUE zet NA-indexen achteraan, FALSE zet ze vooraan.
  • method: te gebruiken sorteermethode.

order() in R

Laten we een voorbeeld bekijken van order() in actie.

De code hieronder maakt een vector y met een lijst getallen. Ik gebruik order(y) om de indexen te krijgen die deze getallen zouden sorteren.

y <- c(4, 12, 6, 7, 2, 9, 5)
order(y)

Bovenstaande code geeft de volgende output:

5 1 7 3 4 6 2

Hier sorteert order() de gegeven getallen op basis van hun index in oplopende volgorde. Omdat 2 het kleinst is, met index vijf, en 4 index 1 heeft, gaat het proces op dezelfde manier verder.

y <- c(4, 12, 6, 7, 2, 9, 5)
y[order(y)]

Bovenstaande code geeft de volgende output:

2 4 5 6 7 9 12

Hier wordt geïndexeerd met de volgorde zodat de werkelijke waarden in oplopende volgorde worden afgedrukt. De waarden worden geordend volgens de index met order() en daarna wordt elke waarde benaderd met y[some-value].

Een vector sorteren met verschillende parameters in order()

Laten we een voorbeeld bekijken waarin de datasets de waarde als symbool NA (Not available) bevatten.

order(x,na.last=TRUE)

x <- c(8, 2, 4, 1, -4, NA, 46, 8, 9, 5, 3)
order(x, na.last = TRUE)

Bovenstaande code geeft de volgende output:

5 4 2 11 3 10 1 8 9 7 6

Hier zal order() ook de gegeven lijst met getallen sorteren op basis van hun index in oplopende volgorde. Omdat NA aanwezig is, wordt de index daarvan als laatste geplaatst; 6 komt dus achteraan vanwege na.last=TRUE.

order(x,na.last=FALSE)

order(x, na.last = FALSE)

Bovenstaande code geeft de volgende output:

6 5 4 2 11 3 10 1 8 9 7

Hier zal order() ook de gegeven lijst met getallen sorteren op basis van hun index in oplopende volgorde. Omdat NA aanwezig is, wordt de index daarvan, 6, als eerste geplaatst vanwege na.last=FALSE.

order(x,decreasing=TRUE,na.last=TRUE)

order(x, decreasing = TRUE, na.last = TRUE)

Bovenstaande code geeft de volgende output:

7 9 1 8 10 3 11 2 4 5 6

Hier sorteert order() de lijst met getallen op basis van hun index in aflopende volgorde vanwege decreasing=TRUE: 46, de grootste, staat op index 7 en de andere waarden worden in aflopende volgorde gerangschikt. Omdat NA aanwezig is, wordt index 6 als laatste geplaatst vanwege na.last=TRUE.

order(x,decreasing=FALSE,na.last=FALSE)

order(x, decreasing = FALSE, na.last = FALSE)

Bovenstaande code geeft de volgende output:

6 5 4 2 11 3 10 1 8 9 7

Hier is NA aanwezig, waarvan de index 6 als eerste wordt geplaatst vanwege na.last=FALSE. order() zal de lijst met getallen sorteren op basis van hun index in oplopende volgorde vanwege decreasing=FALSE: -4, de kleinste, staat op index 5 en de overige waarden worden oplopend gerangschikt.

Begin gratis met R leren

Introductie tot R

BasicSkill Level
{hours} uur
3.1M learners
Beheers de basis van data-analyse in R, inclusief vectors, lists en data frames, en oefen met echte datasets.
See DetailsRight Arrow
Start Course

Een dataframe sorteren met order()

Laten we een data frame maken met een populatiewaarde van 10. De variabele gender bestaat uit vectorwaarden 'male' en 'female' waarbij 10 steekproefwaarden kunnen worden verkregen met behulp van sample(), terwijl replace = TRUE alleen unieke waarden zal genereren. Evenzo bestaat age uit waarden van 25 tot 75, samen met een degree met mogelijke waarden c("MA," "ME," "BE," "BSCS"), die opnieuw unieke waarden zal genereren.

Taak: Sorteer de gegeven data in oplopende volgorde op basis van de leeftijd van de populatie.

Opmerking: De voorbeelddata kan afwijken wanneer je dit lokaal probeert, omdat elke keer dat je de code draait er een uniek dataframe wordt gemaakt.

population <- 10
gender <- sample(c("male", "female"), population, replace = TRUE)
age <- sample(25:75, population, replace = TRUE)
degree <- sample(c("MA", "ME", "BE", "BSCS"), population, replace = TRUE)
final_data <- data.frame(gender = gender, age = age, degree = degree)
final_data
gender age degree
male 40 MA
female 57 BSCS
male 66 BE
female 61 BSCS
female 48 MA
male 25 MA
female 49 BE
male 52 ME
female 57 MA
female 35 MA

Bovenstaande code geeft de volgende output, die een nieuw aangemaakt dataframe laat zien.

  gender       age        degree
   male           40         MA
   female       57         BSCS
   male           66         BE
   female       61         BSCS
   female       48        MA
   male           25         MA
   female       49         BE
   male        52        ME
   female       57         MA
   female       35         MA

Laten we het dataframe in oplopende volgorde sorteren met order() op basis van de variabele age.

order(final_data$age)

Bovenstaande code geeft de volgende output:

6 10 3 9 5 8 4 2 7 1

Aangezien leeftijd 25 op index 6 staat, gevolgd door leeftijd 35 op index 10, worden alle leeftijdswaarden op deze manier oplopend gerangschikt.

De code hieronder gebruikt [] met de volgorde op de variabele age om oplopend te rangschikken, waarbij ook de informatie over gender en degree wordt afgedrukt.

final.data[order(final.data$age),]
  gender age degree
6 male 25 MA
10 female 35 MA
1 male 40 MA
5 female 48 MA
7 female 49 BE
8 male 52 ME
2 female 57 BSCS
9 female 57 MA
4 female 61 BSCS
3 male 66 BE

Bovenstaande code geeft de volgende output:

gender    age    degree
6    male    25    MA
10    female    35    MA
1    male    40    MA
5    female    48    MA
7    female    49    BE
8    male    52    ME
2    female    57    BSCS
9    female    57    MA
4    female    61    BSCS
3    male    66    BE

De output hierboven laat zien dat age oplopend is gerangschikt, met de bijbehorende gender- en degree-informatie.

Sorteren met dplyr's arrange()

Voor een leesbaardere en moderne aanpak kun je de functie arrange() uit het dplyr-pakket gebruiken. Dit is vooral handig binnen het tidyverse-ecosysteem:

# Install dplyr if needed: install.packages("dplyr")
library(dplyr)

# Sort by age in ascending order
final_data %>% arrange(age)

# Sort by age in descending order
final_data %>% arrange(desc(age))

# Sort by multiple columns
final_data %>% arrange(gender, desc(age))

De functie arrange() heeft vaak de voorkeur in data-analyseworkflows omdat deze naadloos integreert met andere dplyr-functies zoals filter(), select() en mutate() met behulp van de pipe-operator.

Vergelijking van sorteermethoden

Function Returns Best For Package
sort() Gesorteerde waarden Vectors Base R
order() Indexen Data frames, complexe sorteringen Base R
arrange() Gesorteerd data frame Tidyverse-workflows dplyr
setorder() Wijzigt in-place Grote datasets (geheugenefficiënt) data.table

Conclusie

In deze tutorial heb ik de essentiële methoden voor het sorteren van data in R behandeld:

  • sort() voor het direct sorteren van vectors
  • order() voor het krijgen van indexen om vectors en data frames te sorteren
  • Omgaan met NA-waarden met de parameter na.last
  • dplyr::arrange() voor moderne, leesbare sortering van data frames
  • Sorteren op meerdere kolommen voor complexe ordeningsvereisten

Voor meer informatie, zie de officiële R-documentatie voor order().

Wil je meer leren over R? Volg dan DataCamps Introduction to R-cursus. Je kunt ook onze data.table-tutorial verkennen voor high-performance datamanipulatie, of onze gids over pipes in R bekijken voor schonere code.

Onderwerpen
R
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