Captura de pantalla 2015-12-20 a las 18.23.04

Hasta la fecha, si necesitaba crear un ranking o un orden con R, realizaba la tarea del siguiente modo:

nombres <- c("grupo_1", "grupo_2")
grupo <- sample(nombres, 10, replace = TRUE, prob = c(0.5, 0.5))
dataset <- data.frame(grupo)
dataset$importes <- runif(10, 100, 30000)

# Creación del ranking de las variables agrupadas
dataset$ranking <- ave(dataset$importes, dataset$grupo,
  FUN = function(x) rank(x, ties.method = "first")
)

Es una agrupación de factores a la que asignamos el orden con rank; con ties.method = "first", esta agrupación se lleva a cabo desde el primer nivel del factor. El resultado se puede comprobar haciendo:

library(reshape)
dataset <- sort_df(dataset, vars = c('grupo', 'importes'))

Otra solución posible la tenemos con plyr:

library(plyr)
dataset <- ddply(dataset, .(grupo), transform, ranking2 = (seq_along(importes)))

Si nuestra agrupación tiene más de una variable, podemos hacer:

dataset$grupo2 <- rpois(10, 1)
dataset <- ddply(dataset, .(grupo, grupo2), transform, ranking3 = (seq_along(importes)))

Imagino que en alguna ocasión os habéis encontrado con este problema; pues ya conocéis dos formas de solucionarlo. Saludos.