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
datasetranking = ave(datasetimportes,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.