¿Cuál es la «mejor» manera de ordenar un dataframe?

El título de esta entrada es una pregunta honesta. Yo siempre he utilizado order así:

iris[order(iris$Petal.Length),]

Y para ordenar por dos (o más columnas), así:

iris[order(iris$Petal.Length, iris$Petal.Width),]

Es a lo que estoy acostumbrado. Sin embargo, la construcción anterior desconcierta a quienes dan sus primeros pasos en R. dplyr dispone de la función arrange con una sintaxis un tanto más natural:

library(dplyr)
arrange(iris, Petal.Length, Petal.Width)

pero, de nuevo, puede resultar desconcertante tener que recurrir a paquetes avanzados: ¿es conveniente introducir a los principiantes en el proceloso mundo de los paquetes para la simple y muy natural operación de ordenar un dataframe?

¿Existe alguna alternativa? Si estuvieseis comenzando con R, ¿preferiríais la vía de order o la de dplyr::arrange?

4 comentarios sobre “¿Cuál es la «mejor» manera de ordenar un dataframe?

  1. joaquin 7 marzo, 2015 11:58

    Para aprender, order, por ser la contra intuición un elemento que ayuda al aprendizaje. Para producción, dplyr::arrange por ser más inteligible y mantenible.

  2. Freddy López 10 marzo, 2015 21:41

    No sé qué elección tomaría yo si comenzara hoy a utilizar R… pero sí sé cómo lo hice cuando comencé (¿hará una década ya?): order.

  3. Benjamín Martín-Palanco 14 marzo, 2015 23:42

    Otras dos alternativas son:

    iris[order(iris[, 3], iris[, 4]), ] # Usando el índice de la columna
    iris[with(iris, order(Petal.Length, Petal.Width)), ] # Función with

    Con el paquete dplyr, podemos emplear el %>%. Aunque en este caso no es necesario, nos permite leer las instrucciones de arriba a abajo y de izquierda a derecha, en lugar de leer desde el interior del paréntesis hacia afuera :

    iris %>%
    arrange(Petal.Length, Petal.Width)

    Comenzando preferiría order. Pero como probablemente necesitaremos hacer más manipulaciones al data frame empezaría a utilizar dplyr pronto.

    Gracias por el blog.

  4. Pinzapo 30 marzo, 2015 13:34

    Como persona recién aterrizada en todo este asunto R, aprendí la forma order primero y lo agradezco como dice @joaquin por acostumbrarte a entender.

    Lo sigo usando cuando tengo que hacer algo en sucio, que vaya a mover mucho o compartir por distintas maquinas con distintos SO y distintas versiones de R, por no tener que andar obligando a actualizar o instalar cosas. dplyr y sus verbos para manejar df me ha resultado muy intuitivos por otro lado, ahora los uso mucho, pero creo que es importante aprender a hacer todo ‘a pelo’.

    Genial blog, lo acabo de encontar y ya lamento no haberlo tenido a mano hace unos meses =)

Los comentarios están desabilitados.