R: добавить метку группы dplyr в виде числа [дубликата]

На этот вопрос уже есть ответ:

R - Группировать по переменным, а затем присваивать уникальный идентификатор 2 ответа Как создать последовательный индекс на основе группирующей переменной в кадре данных 6 ответов

Я не могу разобраться в этом, должно быть, это простая задача. Как получить групповой ярлык как последовательный номер.

library(dplyr)
set.seed(1)
df <- data.frame(id = sample(c('a','b'), 20, T),
                 name = sample(c('N1', 'N2', 'N3'), 20, T),
                 val = runif(20)) %>%
  group_by(id) %>% 
  arrange(id, name)

То, что я хочу, это ярлыкgroup_no указывает количество категорий переменнойname внутри каждогоid группа dplyr. Я не могу найти решение в самом пакете dplyr. Что-то вроде этого

# A tibble: 20 x 4
# Groups:   id [2]
   id    name     val group_no
   <fct> <fct>  <dbl>     <int>
 1 a     N1    0.647          1
 2 a     N1    0.530          1
 3 a     N1    0.245          1
 4 a     N2    0.693          2
 5 a     N2    0.478          2
 6 a     N2    0.861          2
 7 a     N3    0.821          3
 8 a     N3    0.0995         3
 9 a     N3    0.662          3
10 b     N1    0.553          1
11 b     N1    0.0233         1
12 b     N1    0.519          1
13 b     N2    0.783          2
14 b     N2    0.789          2
15 b     N2    0.477          2
16 b     N2    0.438          2
17 b     N2    0.407          2
18 b     N3    0.732          3
19 b     N3    0.0707         3
20 b     N3    0.316          3

Отметим, что значенияname может быть чем угодно и, конечно, обычно не имеет суффикса с цифрой, как в примере (в противном случае я мог бы сделатьsub("^N", "", df$name).

Я ищу что-то немного отличное от1:n() решение в таких сообщениях, какВо.

Ответы на вопрос(3)

Ваш ответ на вопрос