调整日期以避免天数重叠

时间:2015-04-21 18:53:02

标签: arrays r days

如果我有三个日期,例如Jan 1Jan 25Feb 20,但我希望日期以30 days分隔,我该怎么办? 例如,我想要做的是Jan 1Jan 30Feb 29

我是R的新手,但代码应该是这样的 - 如果2nd date之前是1st date + 30),那么请将2nd date调整为(1st +31)和3rd date.类似。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

由于您希望每对相邻日期之间保持固定距离,因此您无需“调整”任何日期;相反,您可以从头开始计算所需的日期向量,从第一个日期开始。

这实际上可以通过一次调用S3通用seq()来完成,该调用将发送到seq.Date()

seq(as.Date('2000-01-01'),by=30,length.out=3);
## [1] "2000-01-01" "2000-01-31" "2000-03-01"

另请注意,您似乎在导出预期日期时出错;从1月1日起30天是1月31日,而不是1月30日。

答案 1 :(得分:1)

d1 = as.Date("01-01",format="%m-%d")
d2 = as.Date("01-25",format="%m-%d")
if (abs(as.numeric(difftime(d2,d1)))<30) d2 = d1 + 30

>d2
[1] "2015-01-31"