¿Cómo puedo clasificar las observaciones dentro de los grupos en Stata?

Tengo algunos datos en Stata que se parecen a las dos primeras columnas de:

group_id   var_to_rank  desired_rank
____________________________________

1           10          1
1           20          2
1           30          3
1           40          4
2           10          1
2           20          2
2           20          2
2           30          3

Me gustaría crear un rango de cada observación dentro del grupo (group_id) de acuerdo con una variable (var_to_rank). Por lo general, para este propósito he utilizado:

gen id = _n

Sin embargo, algunas de mis observaciones (group_id = 2 en mi pequeño ejemplo) tienen los mismos valores de la variable de clasificación y este enfoque no funciona.

También he intentado usar:

egen rank

comando con diferentes opciones, pero no puedo hacer que mis variables de rango se parezcan a desired_rank.

¿Podría señalarme una solución a este problema?