Inkrementelle IDs in einem R-Datenrahmen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie wird die Datentabelle nach Gruppennummer von group_by nummeriert / beschriftet? 5 Antworten

Ich habe den folgenden Datenrahmen:

> 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

Ich möchte jetzt, dass jede Zeile eine ID hat, die nur erhöht wird, wenn sich der Wert von A ändert. Das habe ich versucht:

> 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

Ich möchte jedoch Folgendes erhalten:

       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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage