Cómo ordenar un marco de datos por varias columnas en R

publicado en: Articles | 0

para comenzar a comprender cómo ordenar correctamente los marcos de datos en R, por supuesto, primero debemos generar un marco de datos para manipular.

Nota: El espaciado no es necesario, pero mejora la legibilidad.,

ejecutando nuestro script run.R produce la lista de vectores en nuestro marco de datos como se esperaba, en el orden en que se ingresaron:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1

La función Order

aunque quizás no sea el método de clasificación más fácil de escribir en términos de sintaxis, uno que está más fácilmente disponible para todas las instalaciones de R, debido a ser parte del módulo base, es la función order.,

la función order acepta una serie de argumentos, pero en el nivel más simple el primer argumento debe ser una secuencia de valores o vectores lógicos.,

por ejemplo, podemos usar order() para simplemente ordenar un vector de cinco números ordenados aleatoriamente con este script:

# Create unordered vectorvector = c(2, 5, 1, 3, 4)# Print vectorvector# Sort in ascending ordervector

ejecutando el script, vemos la salida inicial del vector desordenado, seguido de la lista ahora ordenada después:

$ Rscript run.R 2 5 1 3 4 1 2 3 4 5

ordenar un marco de datos por nombre vectorial

con la función order() en nuestra correa de herramientas, comenzaremos a ordenar nuestro marco de datos pasando los nombres de vectores dentro del marco de datos.,

por ejemplo, usando nuestro objeto generado previamente dataframe, podemos Ordenar por el vector z agregando el siguiente código a nuestro script:

# Sort by vector name dataframe

o que estamos haciendo es llamar a nuestro objeto originaldataframe y pasar el nuevo orden de índice que nos gustaría tener., Este orden de índice se genera utilizando la función with(), que crea efectivamente un nuevo entorno utilizando los datos pasados en el primer argumento junto con una expresión para evaluar esos datos en el segundo argumento.

por lo tanto, estamos reevaluando los datos dataframe utilizando la función order(), y queremos ordenar en función del vector z dentro de ese marco de datos., Esto devuelve un nuevo orden de índice para los valores del marco de datos, que finalmente se evalúa dentro de dataframe, dando como resultado nuestro nuevo resultado ordenado.

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z4 strawberry c 13 banana b 22 orange d 31 apple a 4

por Consiguiente, podemos ver nuestra original desordenada de salida, seguido por una segunda salida con los datos ordenados por la columna z.

Ordenar por Índice de columna

Similar al método anterior, también es posible ordenar en función del número index de una columna en el marco de datos, en lugar del nombre específico.,

en lugar de usar la función with(), simplemente podemos pasar la función order() a nuestra función dataframe. Indicamos que queremos Ordenar por la columna de index 1utilizando la sintaxis dataframe, lo que hace que Rdevuelva los niveles (nombres) de ese índice 1 columna., En otras palabras, similar a cuando estábamos en el z nombre del vector anterior, order clasificación basada en el vector de valores que están dentro de la columna de índice 1:

dataframe ),]

Como era de esperar, tenemos nuestra salida normal seguido por la ordenada de salida en la primera columna:

$ Rscript run.R x y z1 apple a 42 orange d 33 banana b 24 strawberry c 1 x y z1 apple a 43 banana b 22 orange d 34 strawberry c 1

Ordenar por Varias Columnas

En algunos casos, puede ser que desee ordenar por varias columnas. Afortunadamente, hacerlo es muy simple con los métodos descritos anteriormente.,

Para ordenar varias columnas utilizando el vector de nombres, simplemente añadir más argumentos a la etiqueta order() llamada a la función como antes:

# Sort by vector name then dataframe

del mismo modo, para ordenar por varias columnas basado en el índice de columna, añadir más argumentos a order() con diferentes índices:

# Sort by column index then dataframe, dataframe ),]

Deja una respuesta

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