Мы можем использовать str_extract
для сопоставления одной или нескольких цифр (\\d+
) после _
, за которым следует .
df1 %>%
mutate(VAR2 = str_extract(VAR1, "(?<=_)\\d+(?=\\.)"))
# VAR1 VAR2
#1 var_1.1 1
#2 var_1.2 1
#3 var_1.3 1
#4 var_2.1 2
#5 var_2.2 2
#6 var_2.3 2
или с str_replace
для захвата цифр как группу и в замене указать обратную ссылку захваченной группы
df1 %>%
mutate(VAR2 = str_replace(VAR1, ".*_(\\d+)\\..*", "\\1"))
или с sub
из base R
sub(".*_(\\d+)\\..*", "\\1", df1$VAR1)
data
df1 <- structure(list(VAR1 = c("var_1.1", "var_1.2", "var_1.3", "var_2.1",
"var_2.2", "var_2.3")), class = "data.frame", row.names = c(NA,
-6L))