【发布时间】:2019-10-09 15:15:24
【问题描述】:
我正在尝试使用使用年份 (DOY) 的数据集并想要计算日期:
将 DOY 格式转换为我使用的日期:
as.Date(DOY, origin = "%Y-01-01")
但我似乎遇到了问题。例如:DOY = 121 代表2003
as.Date(121, origin = "2003-01-01")
[1] "2003-05-02"
这应该是:"2003-05-01"(参见此处:https://asd.gsfc.nasa.gov/Craig.Markwardt/doy2003.html)
代码适用于闰年:
as.Date(121, origin = "2004-01-01")
[1] "2004-05-01"
(并在此处正确显示:https://asd.gsfc.nasa.gov/Craig.Markwardt/doy2004.html)
2005 的问题仍然存在。
我在这里遗漏了一些明显的东西还是缺少闰年的代码有问题?
【问题讨论】:
-
as.Date 是计算起点之后的天数,所以
as.Date(1, origin = "2003-01-01")等于起点+1 天或1 月2 日。对于您的计算,您需要使用 12 月 31 日作为原点。仅供参考,请仔细检查您对上述 2004 年日期的计算。 -
@Dave2e:谢谢,这行得通:
as.Date(121, origin = "2002-12-31"),给出:"2003-05-01";然而as.Date(121, origin = "2003-12-31"),给出:"2004-04-30"。如我的帖子:as.Date(121, origin = "2004-01-01"),给出:"2004-05-01"。这似乎不一致(或者我误解了逻辑)。 -
2004 年是闰年
-
是一致的。 2004 年的第 121 天是 4 月 30 日,而不是 5 月 1 日。仔细检查上面的链接。
-
@Dave2e:是的,我的错。道歉。