för att börja förstå hur du sorterar dataramar korrekt i R
måste vi förstås först skapa en dataram för att manipulera.
Obs! avståndet är inte nödvändigt, men det förbättrar läsbarheten.,
exekvera vårt run.R
script matar ut listan över vektorer i vår dataram som förväntat, i den ordning de angavs:
$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1
Orderfunktionen
även om det kanske inte är den enklaste sorteringsmetoden att skriva ut när det gäller syntax, den som är mest lättillgänglig för alla installationer av
, på grund av att vara en del av base
modulen, är funktionen order
.,
funktionenorder
accepterar ett antal argument, men på den enklaste nivån måste det första argumentet vara en sekvens av värden eller logiska vektorer.,
till exempel kan vi använda order()
för att helt enkelt sortera en vektor med fem slumpmässigt beställda nummer med det här skriptet:
# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector
exekvera skriptet ser vi den ursprungliga utmatningen av den oordnade vektorn, följt av den nu beställda listan efteråt:
$ Rscript run.R 2 5 1 3 4 1 2 3 4 5
Sortera en dataram efter vektornamn
med funktionen order()
I vårt verktygsbälte börjar vi Sortera vår dataram genom att skicka in vektornamnen inom dataramen.,
till exempel, med hjälp av våra tidigare genererade dataframe
objekt, kan vi Sortera efter vektorn z
genom att lägga till följande kod i vårt skript:
# Sort by vector name dataframe
vad vi effektivt gör ringer vår ursprungliga dataframe
objekt, och passerar i den nya indexordning som vi skulle vilja ha., Denna indexordning genereras med hjälp av funktionenwith()
, som effektivt skapar en ny miljö med hjälp av passed in data i det första argumentet tillsammans med ett uttryck för att utvärdera dessa data i det andra argumentet.
således omvärderar vi funktionendataframe
med hjälp avorder()
, och vi vill beställa baserat på vektornz
inom den dataramen., Detta returnerar en ny indexorder för dataramens värden, som sedan slutligen utvärderas inom dataframe
, och matar ut vårt nya beställda resultat.
$ 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
följaktligen ser vi vår ursprungliga oordnade utgång, följt av en andra utgång med data sorterade efter kolumnz
.
sortering efter Kolumnindex
i likhet med ovanstående metod är det också möjligt att sortera baserat på den numeriska index
för en kolumn i dataramen, snarare än det specifika namnet.,
istället för att använda funktionenwith()
kan vi helt enkelt skicka funktionenorder()
till vårdataframe
. Vi anger att vi vill sortera efter kolumnen index1
genom att användadataframe
syntax, vilket gör attR
returnerar nivåerna (namn) för det indexet1
– kolumnen., Med andra ord, som liknar när vi passerade i z
vektornamn ovan, sorterar order
baserat på vektorvärdena som ligger inom kolumnen för index 1
:
dataframe ),]
som förväntat får vi vår normala utdata följt av den sorterade utdata i den första kolumnen:
$ 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
sortering efter flera kolumner
i vissa fall kan det vara önskvärt att Sortera efter flera kolumner. Tack och lov är det väldigt enkelt med de tidigare beskrivna metoderna.,
för att sortera flera kolumner med vektornamn, lägg bara till ytterligare argument till order()
funktionsanrop som tidigare:
# Sort by vector name then dataframe
på samma sätt, för att Sortera efter flera kolumner baserat på kolumnindex, Lägg till ytterligare argument till order()
med olika index:
# Sort by column index then dataframe, dataframe ),]
Lämna ett svar