Мы можем использовать substring
, поскольку это будет быстрее
substring(mystring, 1, nchar(mystring)-5)
[#1] "HOBBIES_1_001"
Чтобы удалить среднюю строку, сопоставьте _
, за которым следуют одна или несколько цифр (\\d+
), за которыми следует _
и цифры и заменить на пустое (""
)
sub("_\\d+_\\d+", "", mystring)
#[1] "HOBBIES_CA_1"
Или другой вариант - захватить подстроку и заменить на обратную ссылку
sub("^([^_]+)_\\d+_\\d+", "\\1", mystring)
#[1] "HOBBIES_CA_1"