Saltar al contenido principal

Tutorial de ordenación en R con order()

En este tutorial, aprenderás a ordenar utilizando order(). Veremos cómo ordenar vectores utilizando distintos parámetros, ordenar dataframes y mucho más.
· 6 min leer

Explora con IA

R proporciona una forma diferente de ordenar los datos, ya sea en orden ascendente o descendente; los analistas de datos y los científicos de datos utilizan order(), sort() y paquetes como dplyr para ordenar los datos en función de la estructura de los datos obtenidos.

order() puede ordenar vectores, matrices y también un dataframe en orden ascendente y descendente con su ayuda, lo que se muestra en la sección final de este tutorial.

Sintaxis de order()

La sintaxis de order() se muestra a continuación:

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

El argumento anterior en order() afirma que:

  • x: datos-cuadros, matrices o vectores
  • decreasing: valor booleano; TRUE ordena en orden descendente o FALSE ordena en orden ascendente.
  • na.last: valor booleano; TRUE entonces los índices NA se ponen al final o FALSE THEN NA los índices NA se ponen primero.
  • method: método de clasificación que se va a utilizar.

order() en R

Veamos un ejemplo de order() en acción.

A continuación, el código contiene la variable x, que incluye un vector con una lista de números. Los números se ordenan según su índice utilizando order(x).

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

El código anterior da el siguiente resultado:

5 1 7 3 4 6 2

Aquí el order() ordenará los números dados según su índice en orden ascendente. Puesto que el número 2 es el más pequeño, que tiene un índice como cinco y el número 4 es el índice 1, y de manera similar, el proceso avanza siguiendo el mismo patrón.

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

El código anterior da el siguiente resultado:

2 4 5 6 7 9 12

Aquí se realiza la indexación de orden, donde los valores reales se imprimen en orden ascendente. Los valores se ordenan según el índice utilizando order() y después de cada valor al que se accede utilizando y[some-value].

Vector de ordenación utilizando diferentes parámetros en order()

Veamos un ejemplo en el que los conjuntos de datos contienen el valor como símbolo NA(No disponible).

order(x,na.last=TRUE)

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

El código anterior da el siguiente resultado:

5 4 2 11 3 10 1 8 9 7 6

Aquí el order() también ordenará la lista de números dada según su índice en orden ascendente. Como NA está presente, su índice se colocará en último lugar, donde 6 se colocará en último lugar debido a na.last=TRUE.

order(x,na.last=FALSE)

order(x,na.last=FALSE)

El código anterior da el siguiente resultado:

6 5 4 2 11 3 10 1 8 9 7

Aquí el order() también ordenará la lista de números dada según su índice en orden ascendente. Como NA está presente, su índice, que es 6, se colocará en primer lugar debido a na.last=FALSE.

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

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

El código anterior da el siguiente resultado:

7 9 1 8 10 3 11 2 4 5 6

Aquí order() ordenará una lista dada de números según su índice en orden descendente debido a decreasing=TRUE: 46. El mayor se coloca en el índice 7, y los demás valores se ordenan de forma decreciente. Como NA está presente, el índice 6 se colocará en último lugar debido a na.last=TRUE.

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

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

El código anterior da el siguiente resultado:

6 5 4 2 11 3 10 1 8 9 7

Aquí está presente NA cuyo índice es 6 se colocará en primer lugar debido a na.last=FALSE. order() ordenará una lista dada de números según su índice en orden ascendente debido a decreasing=FALSE: -4, que es el más pequeño colocado en el índice 5, y los demás valores se ordenan de forma creciente.

Ordenar un dataframe utilizando order()

Vamos a crear un dataframe cuyo valor poblacional sea 10. La variable género consta de los valores vectoriales 'male' y 'female', de los que se pueden obtener 10 valores de muestra con ayuda de sample(), mientras que replace = TRUE sólo generará los valores únicos. Del mismo modo, la edad consta de un valor de 25 a 75, junto con un grado de posible valor como c("MA", "ME", "BE", "BSCS"), que de nuevo generará valores únicos.

Tarea: Ordenar los datos dados en orden ascendente en función de la edad de la población.

Nota: Los datos de muestra que se muestran pueden diferir si intentas utilizarlos en tu máquina local, porque cada vez que se ejecuta un código se crea un dataframe único.

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))
genderagedegree
male40MA
female57BSCS
male66BE
female61BSCS
female48MA
male25MA
female49BE
male52ME
female57MA
female35MA

El código anterior da la siguiente salida, que muestra un dataframe recién creado.

  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

Vamos a ordenar la trama de datos en orden ascendente utilizando order() a partir de la variable edad.

order(final.data$age)

El código anterior da el siguiente resultado:

6 10 3 9 5 8 4 2 7 1

Como la edad de 25 años está en el índice 6, seguida de la edad de 35 años en el índice 10 y, de forma similar, todos los valores relacionados con la edad están ordenados de forma ascendente.

El código siguiente contiene el orden [] con la variable edad, se utiliza para ordenar en orden ascendente donde también se imprime el género, junto con la información de la titulación.

final.data[order(final.data$age),]
 genderagedegree
6male25MA
10female35MA
1male40MA
5female48MA
7female49BE
8male52ME
2female57BSCS
9female57MA
4female61BSCS
3male66BE

El código anterior da el siguiente resultado:

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

La salida anterior muestra que la edad se ordena de forma ascendente junto con su correspondiente género y se obtiene la información del título.

¡Enhorabuena!

Enhorabuena, ¡has llegado al final de este tutorial!

Has aprendido sobre la ordenación utilizando order() con su argumento con los ejemplos y vector de ordenación utilizando diferentes parámetros y ejemplo final, que contiene la ordenación del dataframe.

Para conocer más detalles sobre este tema, puedes visitar Función orden en R

Si quieres aprender más sobre R, sigue el curso de Introducción a R de DataCamp.

Temas

Relacionado

Tutorial

Tutorial de regresión lineal en R

Tutorial

Tutorial de Subconjuntos en R