• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Cómo ordenar dataframe en base a múltiples columnas en R

abril 7, 2021 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

Una tarea bastante habitual cuando se trabaja con conjuntos de datos es ordenar los registros en base los valores de una o varias columnas. Por ejemplo, buscar los clientes con mayor número de visitas y, a igual número de visitas, ordenarlos por gasto. Lo que se pude conseguir fácilmente en R. Únicamente hay que combinar el uso de order() con with() para poder ordenar dataframe en base a múltiples columnas.

La funciones order() y with()

La función order() permite devolver la permutación con la que se puede ordenar el vector que se le ha pasado como parámetro. Una ordenación que puede ser tanto creciente como decreciente. En el caso de que el parámetro sea un conjunto de datos, la permutación se basa en los valores de la primera columna. Por lo que es ampliamente utilizado para ordenar conjuntos de datos.

Por otro lado, la función with() permite la evaluación de una expresión en un conjunto de datos. Lo que simplifica la evaluación de funciones en estos elementos.

Publicidad


Ordenar dataframe en base a una columna

Para ver cómo se pueden combinar las funciones order() y with() vamos a utilizar el conjunto de datos incluido en R mtcars. Un conjunto en el que se puede consultar diferentes datos de 32 coches. Conjunto de datos cuyos primeros registros son

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
En Analytics Lane
Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
 Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
 Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
 Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
 Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
 Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
 Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Uno de los datos que se puede consultar es el número de marchas (gear) del modelo. En el caso querer ordenar los datos por este valor simplemente tenemos que hacer

mtcars[with(mtcars, order(gear)), ]

Esto es, indicar mediante with() que se aplique la función order() a la columna gear del conjunto de datos mtcars. Usando el valor obtenido para ordenar el conjunto de datos inicial. Ahora, los primeros registros del conjunto de datos ordenados son

                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
 Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
 Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
 Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
 Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
 Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
 Merc 450SL        17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3

Por defecto la ordenación es ascendente, aunque es muy fácil cambiar el orden. Simplemente hay que indicar el nombre de la variable con un signo - delante para cambiar el orden, esto es:

mtcars[with(mtcars, order(-gear)), ]

Con lo que ahora los primeros registros del conjunto de datos pasan a ser

                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
 Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
 Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
 Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
 Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
 Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
 Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4

Ordenar dataframe en base a múltiples columnas

Una vez ordenados los vehículos en base al número de marchas puede que nos interese saber cuales tienen un mayor consumo. Valor que se encuentra en la columna mpg. Para que los datos se ordenen en segundo lugar por esta solamente hay que pasarla como segundo parámetro de la función order(). Así para ordenar el conjunto de mayor a menor consumo solo hay que escribir

mtcars[with(mtcars, order(-gear, mpg)), ]

Obteniendo como primeros registros de este conjunto los siguientes valores

                 mpg cyl  disp  hp drat    wt qsec vs am gear carb
 Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
 Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
 Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
 Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
 Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
 Merc 280C      17.8   6 167.6 123 3.92 3.440 18.9  1  0    4    4

Esto es los cinco primeros registros son los cinco vehículos con cinco marchas. Entre ellos el primero es el Maserati Bora con el mayor consumo 15 millas por galón, mientras que el que tiene menor consumo es el quinto, el Lotus Europa con 30,4 millas por galón. Obtenido así el resultado que nos habíamos planteado.

Obviamente, en el caso de que deseemos ordenar los datos en base a una tercera columna, solamente se tendría que agregar esta a la función order(). Siendo posible ordenar cada una de ellas tanto en orden ascendente como descendente.

Publicidad


Conclusiones

En esta ocasión hemos visto un pequeño truco para ordenar dataframe en base a múltiples columnas en R. Este truco es muy útil en las fases previas de análisis de datos, ya que permite ordenar estos con una gran flexibilidad.

Image by Michael Schwarzenberger from Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 1 / 5. Votos emitidos: 1

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: R

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas
  • Cuatro libros para aprender Pandas publicado el marzo 31, 2023 | en Reseñas
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos
  • pandas Pandas: Encontrar la posición y valores de máximos y mínimos en un DataFrame publicado el junio 21, 2021 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto