• 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
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Simulador FIRE (Financial Independence, Retire Early)
    • Herramientas
      • Formateador / Minificador de JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

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

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.

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

Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
En Analytics Lane
Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane

                    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

Publicidad


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.

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

  • Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
  • Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane
  • Hardening avanzado de NGINX: CSP, OCSP Stapling y defensa en profundidad
  • Nuevo generador y verificador de hashes en el laboratorio de aplicaciones de Analytics Lane
  • Nueva simulación de la estrategia Martingala en ruleta en el laboratorio de aplicaciones de Analytics Lane
  • Exactitud, precisión, recall… y los errores que cometemos al interpretarlas en proyectos reales
  • Nuevo simulador del problema de Monty Hall en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador interactivo de K-Means en el laboratorio de aplicaciones de Analytics Lane
  • Por qué los chatbots de inteligencia artificial parecen estar siempre de acuerdo contigo – Conversar con una inteligencia artificial – Parte I

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

Chatbots vs redes sociales: la diferencia clave entre la inteligencia artificial y los algoritmos de recomendación – Conversar con una inteligencia artificial – Parte II

abril 21, 2026 Por Daniel Rodríguez

Nueva Calculadora de Estadísticos Descriptivos en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 Por Daniel Rodríguez

Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 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
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas
  • Ordenadores para Machine Learning e Inteligencia Artificial en 2026: Guía completa para elegir el equipo adecuado según tu perfil y presupuesto publicado el enero 20, 2026 | en Reseñas
  • Chatbots vs redes sociales: la diferencia clave entre la inteligencia artificial y los algoritmos de recomendación – Conversar con una inteligencia artificial – Parte II publicado el abril 21, 2026 | en Opinión

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.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • 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

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-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto