我正在使用一个时间序列数据集,该数据集自原始时间(1-1-1)以来以Julian天为单位。我正在使用chron包中的函数chron来完成从儒略日到公历日期的转换。然而,为了检查我的结果,除了在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,如果转换完成了correctly.In事实,我就会得到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之间的天数,我得到了729,393,而我应该得到729,391。我知道网站在计算中包含了开始日期,尽管仍然存在1的差异。如果你能说明这一点,谢谢你。
发布于 2015-06-27 07:50:51
Gnu EMACS日历工具给出了729,392 (包括729,392),相当于差792,391;它在计算时间间隔中的天数时使用公历。它还规定公元1年1月1日与公元1世纪1月3日和公元1世纪1月3日是同一天。因此,如果其他网站将1582年之前的日期视为公历日期,则将从公元1年1月1日(公元前1年12月30日,公元前1年12月30日)到1998年1月3日(公元前1年1日)公历,并将导致计数比间隔的两端都被视为公历的情况下多出两天。
顺便说一句,最初的Gnu EMACS日历是由Edward Reingold完成的;他和Nachum Dershowitz撰写了日历计算,由剑桥大学出版社出版。
https://stackoverflow.com/questions/31081502
复制相似问题