3.5 Ordenación

Existen tres funciones fundamentales relacionadas con la ordenación de vectores: order, sort y rank. sort ordena los elementos de un vector, i.e., crea una copia de dicho vector con sus elementos ordenados.

x <- c(4, 5, 3, 2, 1, 2)
sort(x)           # ordena los elementos del vector
## [1] 1 2 2 3 4 5

La función order, que ya vimos cuando ordenamos tablas, es tal que sort(x) es lo mismo que x[order(x)]. Es decir, devuelve los índices de los elementos del vector de menor a mayor:

x
## [1] 4 5 3 2 1 2
order(x)
## [1] 5 4 6 3 1 2
x[order(x)]
## [1] 1 2 2 3 4 5

El código anterior muestra cómo para ordernar x hay que tomar primero el elemento quinto elemento de x; luego, el cuarto; después, el sexto, etc.

La función rank indica la posición de los elementos de un vector: el primero, el segundo, etc.

rank(x)
rank(x, ties = "first")

Si x contuviese los tiempos de los velocistas en los 100 metros lisos, rank(x) nos indicaría quién es el primero en llegar a la meta, quién es el segundo, etc.

rank(x) es una transformación no lineal de x que puede ser útil para normalizar datos en algunos contextos.

Si x contuviese el número de puntos obtenidos en la liga de fútbol por los distintos equipos, ¿cómo usarías rank para determinar cuál es el campeón?

¿Qué otros tipos de ties existen? ¿Qué hacen?

Comprueba que rank(x, ties = ‘first’) es equivalente a order(order(x)).

Comprueba que order(order(order(x))) es equivalente a order(x).

Ejecuta e interpreta tail(sort(table(CO2$uptake))). ¿Qué utilidad le ves a la expresión anterior?