我正在使用时间序列数据集,该数据集位于自原点(1-1-1)以来的Julian天。我正在使用chron包中的函数chron进行从Julian天到gregorian日期的转换。但是,为了检查我的结果,除了在R中测试我的结果之外,我还决定将它与几个网站(例如,http://www.timeanddate.com/date/durationresult.html)进行比较,计算两个日期之间的天数。以下是可重现的代码:
library('chron')
date <- seq(from=729391,to=729756,by=30)
d.year <- 1
d.month <- 1
d.day <- 1
new.date <- chron(date,origin. = c(d.year,d.month,d.day), out.format = 'year-d-m')
当我运行以下代码时,如果转换正确完成,我应该为所有元素得到0。实际上我得到0:
> library('lubridate')
> ymd(as.character(new.date)) - ymd('0001-01-01') - date
Time differences in days
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0
当与网站进行比较时,我会得到不同的结果。例如,对于元素new.date[1]
(1998-Jan-03
),我使用上面引用的网站来计算0001-01-01
和1998-Jan-03
之间的天数,我得{{1}我应该得到729,393
。我知道网站在计算中包含了开始日期,即使仍有729,391
的差异。谢谢你,如果你能说清楚这一点。
答案 0 :(得分:2)
Gnu EMACS日历工具给出729,392包含,相当于792,391的差异;它在计算间隔中的天数时使用公历。它还指出公元1月1日格里高利与公元1月3日朱利安的实际日期相同。因此,如果其他一些网站将1582年之前的日期视为朱利安日期,那么它将从1月1日,公元1年Julian(公元前12月30日,公元前1世纪格雷戈里安)到1998年1月3日,格里高利,并将计算到比间隔的两端都被认为是公历的两天。
顺便说一下,原来的Gnu EMACS日历由Edward Reingold完成;他和Nachum Dershowitz撰写了由剑桥大学出版社出版的 Calendrical Calculations 。