Если вы хотите, чтобы конечный номер отслеживал номер строки (немного непонятно из вопроса), вы можете сделать это так:
dat <- data.frame(PFT = rep("alnfru", 10000))
head(dat)
#> PFT
#> 1 alnfru
#> 2 alnfru
#> 3 alnfru
#> 4 alnfru
#> 5 alnfru
#> 6 alnfru
С учетом кодировки столбца, что идентификатор приводит к решению:
dat$ID <- paste(dat$PFT, sprintf("%05d", 1:nrow(dat)), sep = "_")
dat[c(1:3, 9997:10000),]
#> PFT ID
#> 1 alnfru alnfru_00001
#> 2 alnfru alnfru_00002
#> 3 alnfru alnfru_00003
#> 9997 alnfru alnfru_09997
#> 9998 alnfru alnfru_09998
#> 9999 alnfru alnfru_09999
#> 10000 alnfru alnfru_10000
Если на самом деле все идентификаторы начинаются с одного и того же начального кода, вы можете просто сделать:
dat$ID <- paste("alnfru", sprintf("%05d", 1:nrow(dat)), sep = "_")