Мы можем использовать str_c
из stringr
вместе с parse_number
из readr
library(stringr)
library(readr)
library(dplyr)
df1 %>%
mutate(new_id = str_c("text", parse_number(doc_id) + 133))
# id doc_id new_id
#1 1 text1 text134
#2 2 text1 text134
#3 3 text1 text134
#4 4 text2 text135
#5 5 text2 text135
#6 6 text2 text135
#7 7 text3 text136
#8 8 text3 text136
#9 9 text3 text136
Или другой вариант - преобразовать 'doc_id' в индекс match
с элементами unique
, добавьте 133 и paste
с 'текстом'
df1 %>%
mutate(doc_id = str_c('text', 133 + match(doc_id, unique(doc_id))))
Также можно использовать с base R
df1$doc_id <- with(df1, paste0('text', 133 + match(doc_id, unique(doc_id))))
data
df1 <- structure(list(id = 1:9, doc_id = c("text1", "text1", "text1",
"text2", "text2", "text2", "text3", "text3", "text3")), row.names = c(NA,
-9L), class = "data.frame")