Ds incrementais em um quadro de dados R [duplicado]

Esta pergunta já tem uma resposta aqui:

Como numerar / rotular tabela de dados por número de grupo de group_by? 5 respostas

Tenho o seguinte quadro de dados:

> test = data.frame(A = sample(1:5, 10, replace = T)) %>% arrange(A)
> test

   A
1  1
2  1
3  1
4  2
5  2
6  2
7  2
8  4
9  4
10 5

Agora, quero que cada linha tenha um ID que seja incrementado apenas quando o valor de A for alterado. Isto é o que eu tentei:

> test = test %>% mutate(id = as.numeric(rownames(test))) %>% group_by(A) %>% mutate(id = min(id))
> test

       A    id
   (int) (dbl)
1      1     1
2      1     1
3      1     1
4      2     4
5      2     4
6      2     4
7      2     4
8      4     8
9      4     8
10     5    10

No entanto, gostaria de obter o seguinte:

       A    id
   (int) (dbl)
1      1     1
2      1     1
3      1     1
4      2     2
5      2     2
6      2     2
7      2     2
8      4     3
9      4     3
10     5     4

questionAnswers(2)

yourAnswerToTheQuestion