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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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í: 1 iris[order(iris$Petal.Length),] Y para ordenar por dos (o más columnas), así: 1 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: 1 2 library(dplyr) arrange(iris, Petal.