Мы можем использовать sub
для захвата цифр перед пробелом, за которым следует 'd'
as.integer(sub(".*\\s(\\d+) d", "\\1", v1))
#[[1] 12 13 12 15 12
Или с regmatches/regexpr
regmatches(v1, regexpr("(\\d+)(?= d$)", v1, perl = TRUE))
#[1] "12" "13" "12" "15" "12"
Если нам нужно преобразовать все дни, то
library(dplyr)
library(tidyr)
tibble(col1 = v1) %>%
tidyr::extract(col1, into = c('year', 'month', 'day'),
"^(\\d+) y, (\\d+) m, (\\d+) d$", convert = TRUE) %>%
transmute(days = year * 365 + month * 30 + day)
data
v1 <- c("0 y, 0 m, 12 d", "0 y, 0 m, 13 d", "0 y, 0 m, 12 d",
"0 y, 0 m, 15 d", "1 y, 2 m, 12 d")