Order

Más sobre factores, strings y ordenación

R
Esta entrada debería ser un comentario más en esta otra, pero voy a abusar del privilegio de ser dueño de la plataforma para promocionarla. Voy a decir cosas que son aproximadamente ciertas. Los detalles de la verdad de todo están en la ayuda y el código de sort y sus métodos. En R hay dos métodos de ordenación: shell y radix. El primero es genérico y el segundo es mejor cuando en el vector hay muchos elementos repetidos (p.

Hagan sus apuestas; luego, corran el siguiente código

R
library(microbenchmark) library(ggplot2) a_int <- sample(10:99, 1e6, replace = T) a_char <- paste("P", a_int, sep = "") res <- microbenchmark( sort_int = sort(a_int), sort_char_radix = sort(a_char, method = "radix"), sort_char = sort(a_char), factor_trick = as.character(sort(as.factor(a_char))), times = 50 ) autoplot(res)

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

R
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?