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.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]