Это даст вам ожидаемый результат:
library(tidyverse)
dataframe <- tibble(
species = c(
'Dasyatis pastinaca',
'Amblyraja radiata',
'Raja montagui',
'Raja montagui',
'Dasyatis pastinaca',
'Himantura imbricata',
'Mobula thurstoni',
'Raja montagui',
'Mobula thurstoni',
'Dalatias licha'
)
)
Вы можете сделать это так:
dataframe %>%
group_by(species) %>%
mutate(species2 = str_c(species, '_', str_pad(row_number(), 2, pad = '0')))
#> # A tibble: 10 x 2
#> # Groups: species [6]
#> species species2
#> <chr> <chr>
#> 1 Dasyatis pastinaca Dasyatis pastinaca_01
#> 2 Amblyraja radiata Amblyraja radiata_01
#> 3 Raja montagui Raja montagui_01
#> 4 Raja montagui Raja montagui_02
#> 5 Dasyatis pastinaca Dasyatis pastinaca_02
#> 6 Himantura imbricata Himantura imbricata_01
#> 7 Mobula thurstoni Mobula thurstoni_01
#> 8 Raja montagui Raja montagui_03
#> 9 Mobula thurstoni Mobula thurstoni_02
#> 10 Dalatias licha Dalatias licha_01
Потому что species
столбец является группирующим, вы не можете изменить Это. Позже вы можете изменить имя нового столбца на старое:
dataframe %>%
group_by(species) %>%
mutate(species2 = str_c(species, '_', str_pad(row_number(), 2, pad = '0'))) %>%
ungroup() %>%
select(-species) %>%
rename(species = species2)
#> # A tibble: 10 x 1
#> species
#> <chr>
#> 1 Dasyatis pastinaca_01
#> 2 Amblyraja radiata_01
#> 3 Raja montagui_01
#> 4 Raja montagui_02
#> 5 Dasyatis pastinaca_02
#> 6 Himantura imbricata_01
#> 7 Mobula thurstoni_01
#> 8 Raja montagui_03
#> 9 Mobula thurstoni_02
#> 10 Dalatias licha_01
Создано 08.05.2020 пакетом REPEX (v0.3.0)