Come ordinare un frame di dati per più colonne in R

postato in: Articles | 0

Per iniziare a capire come ordinare correttamente i frame di dati in R, ovviamente dobbiamo prima generare un frame di dati da manipolare.

Nota: La spaziatura non è necessaria, ma migliora la leggibilità.,

Eseguire il nostro run.R script di output l’elenco dei vettori nel nostro frame di dati, come previsto, nell’ordine in cui sono stati inseriti:

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

L’Ordine di Funzione

anche se forse non è il più semplice metodo di ordinamento per tipo in termini di sintassi, quello che è più facilmente disponibile per tutte le installazioni di R, a causa di essere una parte del base modulo order funzione.,

La funzione order accetta un numero di argomenti, ma al livello più semplice il primo argomento deve essere una sequenza di valori o vettori logici.,

Per esempio, è possibile usare order() semplicemente ordinare un vettore di cinque numeri ordinati in modo casuale con questo script:

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

l’Esecuzione dello script, vediamo l’output iniziale del vettore non ordinato, seguita da ora ordinato elenco di seguito:

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

l’Ordinamento di un Frame di Dati da un Vettore di Nome

Con il order() funzione di strumento di cintura, inizieremo il nostro ordinamento frame di dati passando il vettore di nomi all’interno del frame di dati.,

Per esempio, utilizza il nostro generato in precedenza dataframe oggetti, siamo in grado di ordinare il vettore z aggiungere il codice seguente al nostro script:

# Sort by vector name dataframe

che Cosa stiamo effettivamente facendo è chiamare il nostro originale dataframe oggetto, e passando il nuovo ordine di indice che ci piacerebbe avere., Questo ordine di indice viene generato utilizzando la funzione with(), che crea effettivamente un nuovo ambiente utilizzando i dati passati nel primo argomento insieme a un’espressione per valutare tali dati nel secondo argomento.

Quindi, stiamo rivalutando i datidataframe usando la funzioneorder() e vogliamo ordinare in base al vettorez all’interno di quel frame di dati., Questo restituisce un nuovo ordine di indice per i valori del frame di dati, che viene infine valutato all’interno di dataframe, emettendo il nostro nuovo risultato ordinato.

$ 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

Di conseguenza, vediamo il nostro output originale non ordinato, seguito da un secondo output con i dati ordinati per colonna z.

Ordinamento per indice di colonna

Simile al metodo precedente, è anche possibile ordinare in base al numericoindex di una colonna nel frame di dati, piuttosto che al nome specifico.,

Invece di usare la funzione with(), possiamo semplicemente passare la funzione order() al nostro dataframe. Indichiamo che vogliamo ordinare per la colonna di index 1 usando la sintassi dataframe, che fa sì che R restituisca i livelli (nomi) di quell’indice 1 colonna., In altre parole, come quando siamo passati nel z vector nome sopra, order è l’ordinamento in base al vettore di valori che sono all’interno della colonna di indice 1:

dataframe ),]

Come previsto, si potrebbe ottenere un output normale seguita da l’output ordinato nella prima colonna:

$ 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

l’Ordinamento in base a Più Colonne

In alcuni casi, si potrebbe desiderare di ordinare in base a più colonne. Per fortuna, farlo è molto semplice con i metodi precedentemente descritti.,

Per ordinare più colonne utilizzando il vettore di nomi, semplicemente di aggiungere altri argomenti all’ order() chiamata di funzione come prima:

# Sort by vector name then dataframe

allo stesso modo, per ordinare in base a più colonne basato sull’indice di colonna, aggiungere ulteriori argomenti order() con differenti indici:

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *