添加列,其中的数字对应于另一列中的值被看到的次数

Add column with numbers corresponding to how many times a value in another column is seen

我有一个大型数据框,我有一个子集来简化我的问题,它看起来像这样:

genome_ID     cluster  
p1.A2           1        
p1.A2           3         
p1.A2           3          
p1.A2           4          
p1.A3           2          
p1.A4           2          
p1.A5           1          
p1.A5           3

我想在数据框中添加一列 'phages' 并添加与 genome_ID 出现次数相对应的数字...即..

  genome_ID     cluster     phages
    p1.A2           1         1
    p1.A2           3         2
    p1.A2           3         3
    p1.A2           4         4
    p1.A3           2         1 
    p1.A4           2         1
    p1.A5           1         1
    p1.A5           3         2

正如您所见,genome_ID p1.A2 出现了四次,因此噬菌体 (1-4) 列中现在有四个不同的分组。 p1.A5 出现了两次,所以现在从 1-2 编号。如果 genome_ID 出现五十次,我希望噬菌体列从 1-50 对每个进行编号(编号顺序无关紧要)

我需要这样做,以便我可以更轻松地对我的数据集进行子集化,以将其映射到系统发育(显示进化关系的生物树)

如果有人能让我深入了解有用的 R 包和方法,那将非常有帮助。

这个有用吗:

library(dplyr)

df %>% group_by(genome_ID) %>% mutate(phages = row_number())
# A tibble: 8 x 3
# Groups:   genome_ID [4]
  genome_ID cluster phages
  <chr>       <dbl>  <int>
1 p1.A2           1      1
2 p1.A2           3      2
3 p1.A2           3      3
4 p1.A2           4      4
5 p1.A3           2      1
6 p1.A4           2      1
7 p1.A5           1      1
8 p1.A5           3      2