hoe Sorteer je een dataframe op meerdere kolommen in R

geplaatst in: Articles | 0

om te begrijpen hoe je dataframe correct sorteert in R, moeten we natuurlijk eerst een dataframe genereren om te manipuleren.

opmerking: de spatiëring is niet nodig, maar het verbetert de leesbaarheid.,

bij het Uitvoeren van onze run.R script voert de lijst van vectoren in onze data frame zoals verwacht, in de volgorde waarin ze zijn ingevoerd:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1

De Volgorde Functie

Hoewel misschien niet de makkelijkste sorteermethode naar type in termen van syntax, degene die het meest direct beschikbaar voor alle installaties R, omdat ze een deel van de base module, is de order functie.,

de functie order accepteert een aantal argumenten, maar op het eenvoudigste niveau moet het eerste argument een reeks waarden of logische vectoren zijn.,

bijvoorbeeld, kunnen we gebruik order() gewoon een soort vector van vijf willekeurige volgorde de nummers met dit script:

# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector

het Uitvoeren van het script, zien we de eerste uitvoer van de ongeordende vector, gevolgd door de inmiddels geordende lijst daarna:

$ Rscript run.R 2 5 1 3 4 1 2 3 4 5

Sorteren van een Data Frame door de Vector Naam

Met de order() functie die in onze tool belt, zullen we beginnen met het sorteren van onze data frame door het passeren in de vector namen in het data-frame.,

bijvoorbeeld, met behulp van ons eerder gegenereerde dataframe object, kunnen we Sorteren op de vector z door de volgende code aan ons script toe te voegen:

# Sort by vector name dataframe

wat we effectief doen is het aanroepen van onze originele dataframeobject, en doorgeven in de nieuwe index volgorde die we willen hebben., Deze indexvolgorde wordt gegenereerd met behulp van de functie with(), die effectief een nieuwe omgeving creëert met behulp van de doorgegeven gegevens in het eerste argument samen met een expressie voor het evalueren van die gegevens in het tweede argument.

dus herevalueren we de dataframe data met behulp van de order() functie, en we willen volgorde op basis van de z vector binnen dat gegevensframe., Dit retourneert een nieuwe indexvolgorde voor de data frame waarden, die dan uiteindelijk wordt geëvalueerd binnen de of dataframe, het uitvoeren van ons nieuwe geordende resultaat.

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z4 strawberry c 13 banana b 22 orange d 31 apple a 4

bijgevolg zien we onze oorspronkelijke ongeordende uitvoer, gevolgd door een tweede uitvoer met de gegevens gesorteerd op kolom z.

Sorteren op Kolomindex

vergelijkbaar met de bovenstaande methode, is het ook mogelijk om te sorteren op basis van de numerieke index van een kolom in het gegevensframe, in plaats van de specifieke naam.,

in plaats van de functie with() te gebruiken, kunnen we de functie order() gewoon doorgeven aan onze functie dataframe. We geven aan dat we willen Sorteren op de kolom van index 1 met behulp van de dataframe syntaxis, waardoor R de niveaus (namen) van die index 1 retourneren., In andere woorden, net als toen we voorbij de z vector naam boven order sorteren op basis van de vector waarden die binnen de kolom van de index 1:

dataframe ),]

Zoals verwacht, krijgen we onze normale uitgang gevolgd door de gesorteerde uitvoer in de eerste kolom:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z1 apple a 43 banana b 22 orange d 34 strawberry c 1

Sorteren op Meerdere Kolommen

In sommige gevallen, het kan wenselijk zijn om te sorteren op meerdere kolommen. Gelukkig, dit te doen is zeer eenvoudig met de eerder beschreven methoden.,

om meerdere kolommen te sorteren met behulp van vectornamen, voegt u gewoon extra argumenten toe aan de order() functietoeroep zoals eerder:

# Sort by vector name then dataframe

om op meerdere kolommen te sorteren op basis van kolomindex, voegt u extra argumenten toe aan order()met verschillende indices:

# Sort by column index then dataframe, dataframe ),]

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *