基于group_by变量为每行创建唯一计数变量

b22*_*222 0 r dplyr

我有以下数据框:

help <- data.frame(id = c(5,5,5,5,5,12,12,12,17,17,20,20,20,20,20,20),
                   number = c(1,2,3,4,5,1,2,3,1,2,1,2,3,4,5,6),
                   episode = c(1,1,1,2,2,1,1,1,1,1,1,1,1,2,2,3))


   id number episode
1   5      1       1
2   5      2       1
3   5      3       1
4   5      4       2
5   5      5       2
6  12      1       1
7  12      2       1
8  12      3       1
9  17      1       1
10 17      2       1
11 20      1       1
12 20      2       1
13 20      3       1
14 20      4       2
15 20      5       2
16 20      6       3
Run Code Online (Sandbox Code Playgroud)

number为每个id 都有一些观察变量,但是每个剧集中也需要一个唯一的计数.

我希望df看起来像

   id number episode number.ep
1   5      1       1         1
2   5      2       1         2
3   5      3       1         3
4   5      4       2         1
5   5      5       2         2
6  12      1       1         1
7  12      2       1         2
8  12      3       1         3
9  17      1       1         1
10 17      2       1         2
11 20      1       1         1
12 20      2       1         2
13 20      3       1         3
14 20      4       2         1
15 20      5       2         2
16 20      6       3         1
Run Code Online (Sandbox Code Playgroud)

使用group_by(id)后,我在mutate命令中遇到错误.有什么建议?

jer*_*ycg 7

使用dplyr:

library(dplyr)

help %>% group_by(id, episode) %>%
         mutate(number.ep = row_number( ))
Run Code Online (Sandbox Code Playgroud)