我是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-2018
和2007-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"