Vai al contenuto principale

Come ordinare i dati in R: un tutorial completo

Impara a ordinare vettori, data frame e altro in R usando order(), sort() e arrange() di dplyr con esempi pratici.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

R offre diversi modi per ordinare i dati in ordine crescente o decrescente; data analyst e data scientist usano order(), sort() e pacchetti come dplyr per ordinare i dati a seconda della loro struttura.

TL;DR

  • Usa sort() per ordinare direttamente un vettore e ottenere i valori ordinati
  • Usa order() per ottenere gli indici che ordinerebbero un vettore — ideale per ordinare i data frame
  • Usa dplyr::arrange() per un approccio moderno e leggibile all'ordinamento dei data frame
  • Gestisci i valori NA con il parametro na.last (TRUE mette gli NA in fondo, FALSE all'inizio)
  • Ordina in ordine decrescente con decreasing = TRUE o usando il segno meno

order() può ordinare vettori, matrici e anche un data frame in ordine crescente e decrescente, come mostrato nella sezione finale di questo tutorial.

Sintassi di order()

La funzione sort()

Prima di entrare in order(), vediamo la più semplice funzione sort(). Mentre order() restituisce indici, sort() restituisce direttamente i valori ordinati:

# Create a vector
values <- c(4, 12, 6, 7, 2, 9, 5)

# sort() returns the sorted values directly
sort(values)
[1]  2  4  5  6  7  9 12

La differenza chiave è che sort() ti dà i valori effettivamente ordinati, mentre order() ti dà le posizioni. Questo rende order() più utile per ordinare i data frame, come vedremo più avanti.

Sintassi di order()

La sintassi di order() è mostrata qui sotto:

order(x, decreasing = TRUE or FALSE, na.last = TRUE or FALSE, method = c("auto", "shell", "quick", "radix"))

Gli argomenti di order() indicano che:

  • x: data frame, matrici o vettori
  • decreasing: valore booleano; TRUE ordina in ordine decrescente, FALSE ordina in ordine crescente.
  • na.last: valore booleano; TRUE mette gli indici NA alla fine, FALSE li mette all'inizio.
  • method: metodo di ordinamento da utilizzare.

order() in R

Vediamo un esempio di order() in azione.

Il codice seguente crea un vettore y che contiene una lista di numeri. Userò order(y) per ottenere gli indici che ordinerebbero questi numeri.

y <- c(4, 12, 6, 7, 2, 9, 5)
order(y)

Il codice sopra produce il seguente output:

5 1 7 3 4 6 2

Qui order() ordina i numeri dati in base ai loro indici in ordine crescente. Poiché il numero 2 è il più piccolo, ha indice cinque, e il numero 4 ha indice 1; allo stesso modo, il processo prosegue con lo stesso schema.

y <- c(4, 12, 6, 7, 2, 9, 5)
y[order(y)]

Il codice sopra produce il seguente output:

2 4 5 6 7 9 12

Qui viene applicato l'indicizzamento restituito da order() e vengono stampati i valori effettivi in ordine crescente. I valori sono ordinati secondo l'indice usando order() e poi ogni valore è accessibile usando y[valore].

Ordinare un vettore usando diversi parametri in order()

Vediamo un esempio in cui il dataset contiene il valore come simbolo NA (Not available).

order(x,na.last=TRUE)

x <- c(8, 2, 4, 1, -4, NA, 46, 8, 9, 5, 3)
order(x, na.last = TRUE)

Il codice sopra produce il seguente output:

5 4 2 11 3 10 1 8 9 7 6

Qui order() ordina anche la lista di numeri data in base agli indici in ordine crescente. Poiché è presente NA, il suo indice verrà messo in fondo: l'indice 6 sarà in ultima posizione a causa di na.last=TRUE.

order(x,na.last=FALSE)

order(x, na.last = FALSE)

Il codice sopra produce il seguente output:

6 5 4 2 11 3 10 1 8 9 7

Qui order() ordina anche la lista di numeri data in base agli indici in ordine crescente. Poiché è presente NA, il suo indice, che è 6, verrà messo all'inizio a causa di na.last=FALSE.

order(x,decreasing=TRUE,na.last=TRUE)

order(x, decreasing = TRUE, na.last = TRUE)

Il codice sopra produce il seguente output:

7 9 1 8 10 3 11 2 4 5 6

Qui order() ordina la lista di numeri data in base agli indici in ordine decrescente grazie a decreasing=TRUE: 46, il più grande, è in posizione con indice 7, e gli altri valori sono disposti in modo decrescente. Poiché è presente NA, l'indice 6 sarà messo in fondo a causa di na.last=TRUE.

order(x,decreasing=FALSE,na.last=FALSE)

order(x, decreasing = FALSE, na.last = FALSE)

Il codice sopra produce il seguente output:

6 5 4 2 11 3 10 1 8 9 7

Qui è presente NA il cui indice è 6, e verrà messo all'inizio a causa di na.last=FALSE. order() ordina la lista di numeri data in base agli indici in ordine crescente poiché decreasing=FALSE: -4, il più piccolo, è in posizione con indice 5 e gli altri valori sono disposti in modo crescente.

Inizia a imparare R gratis

Introduzione a R

BasicSkill Level
4 ore
3.1M learners
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
See DetailsRight Arrow
Start Course

Ordinare un data frame usando order()

Creiamo un data frame con valore di popolazione pari a 10. La variabile gender è composta dai valori del vettore 'male' e 'female' da cui si possono ottenere 10 valori di esempio con sample(), mentre replace = TRUE genererà solo valori univoci. Allo stesso modo, age contiene valori da 25 a 75, insieme a degree con possibili valori c("MA," "ME," "BE," "BSCS"), che di nuovo genererà valori univoci.

Obiettivo: ordinare i dati in ordine crescente in base all'età della popolazione data.

Nota: i dati di esempio mostrati possono differire quando proverai a usarli in locale, perché ogni esecuzione del codice crea un data frame univoco.

population <- 10
gender <- sample(c("male", "female"), population, replace = TRUE)
age <- sample(25:75, population, replace = TRUE)
degree <- sample(c("MA", "ME", "BE", "BSCS"), population, replace = TRUE)
final_data <- data.frame(gender = gender, age = age, degree = degree)
final_data
gender age degree
male 40 MA
female 57 BSCS
male 66 BE
female 61 BSCS
female 48 MA
male 25 MA
female 49 BE
male 52 ME
female 57 MA
female 35 MA

Il codice sopra produce il seguente output, che mostra un data frame appena creato.

  gender       age        degree
   male           40         MA
   female       57         BSCS
   male           66         BE
   female       61         BSCS
   female       48        MA
   male           25         MA
   female       49         BE
   male        52        ME
   female       57         MA
   female       35         MA

Ordiniamo il data frame in ordine crescente usando order() in base alla variabile age.

order(final_data$age)

Il codice sopra produce il seguente output:

6 10 3 9 5 8 4 2 7 1

Poiché l'età 25 è all'indice 6 seguita da 35 all'indice 10, e così via, tutti i valori di età sono disposti in ordine crescente.

Il codice seguente utilizza l'ordinamento con [] sulla variabile age per disporre in ordine crescente, stampando anche le informazioni su gender e degree.

final.data[order(final.data$age),]
  gender age degree
6 male 25 MA
10 female 35 MA
1 male 40 MA
5 female 48 MA
7 female 49 BE
8 male 52 ME
2 female 57 BSCS
9 female 57 MA
4 female 61 BSCS
3 male 66 BE

Il codice sopra produce il seguente output:

gender    age    degree
6    male    25    MA
10    female    35    MA
1    male    40    MA
5    female    48    MA
7    female    49    BE
8    male    52    ME
2    female    57    BSCS
9    female    57    MA
4    female    61    BSCS
3    male    66    BE

L'output sopra mostra che l'età è disposta in ordine crescente insieme alle corrispondenti informazioni su gender e degree.

Ordinamento con arrange() di dplyr

Per un approccio più leggibile e moderno, puoi usare la funzione arrange() del pacchetto dplyr. È particolarmente utile quando lavori nell'ecosistema tidyverse:

# Install dplyr if needed: install.packages("dplyr")
library(dplyr)

# Sort by age in ascending order
final_data %>% arrange(age)

# Sort by age in descending order
final_data %>% arrange(desc(age))

# Sort by multiple columns
final_data %>% arrange(gender, desc(age))

La funzione arrange() è spesso preferita nei flussi di lavoro di analisi dei dati perché si integra senza problemi con altre funzioni di dplyr come filter(), select() e mutate() usando il pipe operator.

Confronto dei metodi di ordinamento

Funzione Restituisce Ideale per Pacchetto
sort() Valori ordinati Vettori Base R
order() Indici Data frame, ordinamenti complessi Base R
arrange() Data frame ordinato Workflow Tidyverse dplyr
setorder() Modifica in place Dataset di grandi dimensioni (efficiente in memoria) data.table

Conclusione

In questo tutorial ho coperto i metodi essenziali per ordinare i dati in R:

  • sort() per ordinare direttamente i vettori
  • order() per ottenere gli indici con cui ordinare vettori e data frame
  • Gestione dei valori NA con il parametro na.last
  • dplyr::arrange() per un ordinamento dei data frame moderno e leggibile
  • Ordinamento su più colonne per esigenze di ordinamento complesse

Per maggiori informazioni, consulta la documentazione ufficiale di R per order().

Se vuoi saperne di più su R, segui il corso Introduction to R di DataCamp. Puoi anche esplorare il nostro tutorial su data.table per una manipolazione dei dati ad alte prestazioni o consultare la nostra guida sulle pipe in R per un codice più pulito.

Argomenti
R
Analisi dei dati

Corsi su R

Corso

Introduzione a R

4 ore
3.1M
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro