lubridate :: isoyear()返回意外输出

时间:2017-11-27 11:11:58

标签: r lubridate

我正在使用lubridate包来处理R中的日期。我从isoyear()函数意外返回。

library(lubridate)      

isoyear("2014-12-31")  
[1] 2015    

year("2014-12-31")  
[1] 2014  

isoyear()函数表示2014-12-31是在2015年,而2015年表示它在2014年。显然年份()的回报是我的预期。

有人可以解释isoyearyear之间行为的差异吗?我想不出任何我想要2015年至2015年的2015年回归的情况。

1 个答案:

答案 0 :(得分:4)

你必须考虑到输出给出格里高利年。

  

ISO年份数字与公历年(如果适用)的数字不同,星期五,星期六和星期日,或星期六和星期日,或星期日,格雷戈里年初(在在上一个ISO年度结束时和周一,周二和周三,或周一和周二,或仅在周一,在公历年结束时(在下一个ISO年的第01周)。
  在1月4日至12月28日期间以及所有星期四,ISO年份数始终等于公历年数

参见12月29日至1月3日期间的一些例子,其中有不同之处:

library(lubridate)
isoyear(ymd("2005-01-01"))
[1] 2004
isoyear(ymd("2008-12-30"))
[1] 2009

所以这不是错误......它只是遵循iso years的计算。