如果我有三个日期,例如Jan 1
,Jan 25
和Feb 20
,但我希望日期以30 days
分隔,我该怎么办?
例如,我想要做的是Jan 1
,Jan 30
,Feb 29
。
我是R的新手,但代码应该是这样的 - 如果2nd date
之前是1st date
+ 30),那么请将2nd date
调整为(1st
+31)和3rd date.
类似。
非常感谢任何帮助!
答案 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"