Хорошо, я сделал гипотетический пример с предоставленными вами частичными данными.
library(dplyr)
df <- tribble(
~CLONEID, ~CHROM,
'976803', '2A',
'976877', '5B',
'976952', '6B',
'976961', '3B',
'976975', '1A',
'977084', '7B',
'977228', '4A',
'977241', '3A',
'977252', '7B',
'977303', '4A',
'977315', '4A',
'977422', '4A'
)
Мы группируем по CHROM, чтобы мы могли идентифицировать дубликаты и нумеровать их с помощью исходного CLONEID и последовательного, начиная с 1 После переименования мы переупорядочиваем, чтобы новые CLONEID отображались вместе.
df <-
df %>%
group_by(CHROM) %>%
mutate(CLONEID = ifelse(row_number() == 1, CLONEID, paste0(first(CLONEID), "_", row_number()-1))) %>%
ungroup() %>%
arrange(CLONEID)
print(df)
Вывод
CLONEID CHROM
<chr> <chr>
1 976803 2A
2 976877 5B
3 976952 6B
4 976961 3B
5 976975 1A
6 977084 7B
7 977084_1 7B
8 977228 4A
9 977228_1 4A
10 977228_2 4A
11 977228_3 4A
12 977241 3A