så här sorterar du en dataram med flera kolumner i R

posted in: Articles | 0

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

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *