Een data frame sorteren rangschikken

Terminologie

Nu moeten we letten op de terminologie: onder sorteren verstaan we in de volksmond soms dat we iets aflopen of oplopend sorteren. Echter is sorteren het plaatsen van elementen in de daarvoor gedefinieerde juiste doelen. Net zoals je als baby de juiste figuurtjes (driehoekje, blokje en rondje) in het juiste gat moest stoppen. Echter bedoelen we hier rangschikken: van hoog naar laag of van laag naar hoog.

Naast rangschikken op de salarissen kunnen we de data frame werknemers nu ook rangschikken op de kolom functiesPersonen2. Om te rangschikken in R, gebruik je de order functie. Aan de hand van de volgende voorbeelden zullen we zien dat rangschikken in R vrij eenvoudig is.

In het artikel [6] Sorting data, (Kabacoff, 2014) wordt een handig overzicht gegeven over hoe je kunt sorteren in R.

# het werknemersbestand oplopend rangschikken op salarissen
werknemersbestand[order(werknemersbestand$salarissenPersonen),]
##    namenPersonen salarissenPersonen functiesPersonen functiesPersonen2
## 4          Marco               2000           Junior            Junior
## 10       Winston               2000       Facilitair        Facilitair
## 2     Rosemarijn               2800     Secretariaat      Secretariaat
## 8        Francis               3100           Senior            Senior
## 5           Koen               3600           Senior            Senior
## 3           Arie               5000           Senior            Senior
## 6           Noah               5000           Senior            Senior
## 9           Henk               6000          Partner           Partner
## 7          Helga               7000          Partner           Partner
## 1           Jack               9000 Managing partner  Managing partner
# het werknemersbestand aflopend rangschikken op salarissen
werknemersbestand[order(-werknemersbestand$salarissenPersonen),]
##    namenPersonen salarissenPersonen functiesPersonen functiesPersonen2
## 1           Jack               9000 Managing partner  Managing partner
## 7          Helga               7000          Partner           Partner
## 9           Henk               6000          Partner           Partner
## 3           Arie               5000           Senior            Senior
## 6           Noah               5000           Senior            Senior
## 5           Koen               3600           Senior            Senior
## 8        Francis               3100           Senior            Senior
## 2     Rosemarijn               2800     Secretariaat      Secretariaat
## 4          Marco               2000           Junior            Junior
## 10       Winston               2000       Facilitair        Facilitair
# het werknemers bestand aflopend rangschikken op functie (zonder hiërarchie)
werknemersbestand[order(-werknemersbestand$functiesPersonen),]
## Warning in Ops.factor(werknemersbestand$functiesPersonen): '-' not
## meaningful for factors
##    namenPersonen salarissenPersonen functiesPersonen functiesPersonen2
## 1           Jack               9000 Managing partner  Managing partner
## 2     Rosemarijn               2800     Secretariaat      Secretariaat
## 3           Arie               5000           Senior            Senior
## 4          Marco               2000           Junior            Junior
## 5           Koen               3600           Senior            Senior
## 6           Noah               5000           Senior            Senior
## 7          Helga               7000          Partner           Partner
## 8        Francis               3100           Senior            Senior
## 9           Henk               6000          Partner           Partner
## 10       Winston               2000       Facilitair        Facilitair
# het werknemers bestand aflopend rangschikken op functie (met hiërarchie)
werknemersbestand[order(werknemersbestand$functiesPersonen2),]
##    namenPersonen salarissenPersonen functiesPersonen functiesPersonen2
## 1           Jack               9000 Managing partner  Managing partner
## 7          Helga               7000          Partner           Partner
## 9           Henk               6000          Partner           Partner
## 3           Arie               5000           Senior            Senior
## 5           Koen               3600           Senior            Senior
## 6           Noah               5000           Senior            Senior
## 8        Francis               3100           Senior            Senior
## 4          Marco               2000           Junior            Junior
## 2     Rosemarijn               2800     Secretariaat      Secretariaat
## 10       Winston               2000       Facilitair        Facilitair

Zoals je kunt zien, kunnen we sorteren op de functies in de volgorde die we voor de factor gedefinieerd hebben.

De laatste tabel is gerangschikt op de functie (de factor-versie). Als we naar de Senior werknemers kijken, is het misschien een goede toevoeging om binnen een bepaalde functie aan werknemers een rangschikking (aflopend) van de salarissen toe te voegen. Op dit moment zie je namelijk dat de salarissen nog niet zijn gerangschikt Dit kunnen we eenvoudig doen door een extra argument aan de order functie toe te voegen. Namelijk salarissenPersonen als secondaire rangschikking.

# Het werknemers bestand aflopend rangschikken op functie (met hiërarchie)
werknemersbestand[order(werknemersbestand$functiesPersonen2,
                        -werknemersbestand$salarissenPersonen),]
##    namenPersonen salarissenPersonen functiesPersonen functiesPersonen2
## 1           Jack               9000 Managing partner  Managing partner
## 7          Helga               7000          Partner           Partner
## 9           Henk               6000          Partner           Partner
## 3           Arie               5000           Senior            Senior
## 6           Noah               5000           Senior            Senior
## 5           Koen               3600           Senior            Senior
## 8        Francis               3100           Senior            Senior
## 4          Marco               2000           Junior            Junior
## 2     Rosemarijn               2800     Secretariaat      Secretariaat
## 10       Winston               2000       Facilitair        Facilitair

Het eindresultaat is dat de werknemers op functies zijn gerangschikt, en binnen de functies op hun salaris zijn gerangschikt.

results matching ""

    No results matching ""