Creacion de ranking con R

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.