Forums
Hola a todos
tengo una duda que no me ha dejado dormir,
Estoy realizando un ranking sobre recurrencia, para esto debo hacer un conteo de los numeros telefonicos para conocer cuantas veces se han comunicado.
El problema se presenta cuando se realiza el rankx debido a que en la columna de conteo se repetin registros.
¿Como puede hacer un desempate sobre el rank para tener numeracion consecutiva y no repetidos?
Hola Jorge, Efectivamente…
Hola Jorge,
Efectivamente la función RANKX no permite desempatar. Lo que he hecho yo en alguna ocasión ha sido sumar a la columna que quiero "rankear" un número aleatorio entre 0 y 1 (con RAND). Que sea entre 0 y 1 es crítico para que el valor entero no cambie. La cuestión es que, tras añadir el valor aleatorio, la probabilidad de que haya dos números idénticos es casi nula, pero el orden (considerando la parte entera) no cambia. Te pongo un ejemplo: Parto de la siguiente tabla:
Ahora creo una tabla calculada con el recuento por número:
Resumen =
SUMMARIZE(
data;
data[Número];
"N";
COUNT(data[Número])
)
Creo una nueva columna añadiendo el número aleatorio:
N2 = Resumen[N]+RAND()
Y rankeo esta última en otra columna calculada:
Rank = RANKX(Resumen; Resumen[N2]; ; ;Skip)
Y éste es el resultado (llevado todo a un objeto visual tipo tabla):
Obviamente el rango para las igualdades es aleatorio (aquí B aparece por delante de A, pero podría ser al revés). Si quisieras que fuese un valor fijo, en lugar de añadir un número aleatorio podrías sumar a cada fila i-1/N, siendo i el número de fila y N el número total de filas. Pongo i-1 para que la primera fila tome el valor 0 y la última no llegue nunca a N (en cuyo caso estaríamos sumando 1 y cambiaríamos de rango).
Dime si te sirve
Un saludo
Ismael