在R中如何用一个简单的规则创建一个年份向量



我是2007的第一年。最后一年是2021

我需要创建一个字符向量,就像下面的向量:

c("2007-2008","2007-2010","2007-2012","2007-2014","2007-2016","2007-2018","2007-2021")

这个想法是有:first-year -second year,first-year - first-year+3,first-year - first-year+5,first-year - first-year+7,first-year - first-year+9,first-year - first-year+11,first-year - first-year+13,但是当我有first-year - first-year+13,下一步比去年(2021)更大时,我考虑first-year - lastyear

换句话说,过去几年之间的差异应该至少是2(2008....2010…2012…2014…2016…2018…2020),但是一旦我有2020年,它将导致下一个间隔2007-2021有1年的差异,如果发生这种情况,我考虑2007-20182007-2021

我如何在R中创建这样的东西?

years <- c(2007, 2021)
years <- unique(sort(c(years, seq(1 + years[1], years[2], by = 2))))
years
# [1] 2007 2008 2010 2012 2014 2016 2018 2020 2021
years <- years[c(diff(years) >= 2, TRUE)]
years
# [1] 2008 2010 2012 2014 2016 2018 2021
paste(2007, years, sep = "-")
# [1] "2007-2008" "2007-2010" "2007-2012" "2007-2014" "2007-2016" "2007-2018" "2007-2021"

直接从seq生成所需序列的想法

st <- 2007
en <- 2021
paste(st, unique(c(seq(st + 1, en - 2, 2), en)), sep = "-")
[1] "2007-2008" "2007-2010" "2007-2012" "2007-2014" "2007-2016" "2007-2018"
[7] "2007-2021"

最新更新