Мы можем использовать sub
для захвата первых двух цифр, оставляя следующие две цифры и -
, а при замене укажите обратную ссылку (\\1
) захваченной группы
as.numeric(sub("^(\\d{2})\\d{2}-", "\\1", v1))
#[1] 2016 2017
Или более компактно сопоставьте две цифры, за которыми следует -
, и замените пробелом (''
)
sub("\\d{2}-", "", v1)
[1] "2016" "2017"
Или используя substr
paste0(substr(v1,1, 2), substr(v1, 6, 7))
#[1] "2016" "2017"
ПРИМЕЧАНИЕ. Ни одно из решений не требует внешних пакетов. Кроме того, он неявно предполагает, что всегда есть приращение на 1 год. Это может быть любой год, как показано ниже, и он работает
v2 <- c("2015-18", "2014-15", "2012-19")
sub("\\d{2}-", "", v2)
#[1] "2018" "2015" "2019"
данные
v1 <- c("2015-16", "2016-17")