R timeBasedSeq必须引用以避免在公元1000年之前的日期出错。但是如何处理BCE日期呢?

时间:2015-08-11 22:56:55

标签: r date sequence

我正在处理古气候数据,需要很长时间的时间序列。为了帮助创建一个xts对象,我使用了方便的timeBasedSeq函数。根据文档,您不需要引用日期范围,因为它将在内部处理。事实证明,对于从公元1000年开始的日期,情况确实如此。但是,对于早于1000 CE的日期,行为非常不一致。例如,以下命令为1550-1560 CE年份提供了正确的月度日期序列:

timeBasedSeq(155001/1560)  
timeBasedSeq(1550/156012)  
timeBasedSeq(155001/156012)  

对于公元1000年以前的日期,结果不一致。命令......

timeBasedSeq(550/56012)  

在550-560 CE之间产生正确的月度序列。命令......

timeBasedSeq(0550/0560)  

在公元550-560之间生成相同十年的正确年度序列。但命令......

timeBasedSeq(55001/560)  
timeBasedSeq(055001/0560)  

生成错误:

Error in seq.int(r1$mon, 12 * (to0$year - r1$year) + to0$mon, by) : wrong sign in 'by' argument  

更糟糕的是,命令......

timeBasedSeq(55001/56012)
timeBasedSeq(055001/056012)

...不要引发错误,但会产生错误的日​​期序列:从5500到5601 CE(将来的远期)的世纪年度序列。

引用后面这些有问题的命令会产生正确的结果。例如,......

timeBasedSeq("55001/560")  

在550-560之间给出正确的每月序列,而没有引号的相同命令会引发错误。因此,无论文档如何,总是在timeBasedSeq中引用日期范围规范似乎是个好主意。

但是,我找不到任何方法来生成0 CE之前的日期序列 - 即日期BC或BCE。即使引用日期范围,timeBasedSeq似乎也会忽略负号。有没有人建议生成从公元前2000年到公元500年每月运行的序列?

0 个答案:

没有答案