我正在使用lubridate包来处理R中的日期。我从isoyear()
函数意外返回。
library(lubridate)
isoyear("2014-12-31")
[1] 2015
year("2014-12-31")
[1] 2014
isoyear()函数表示2014-12-31是在2015年,而2015年表示它在2014年。显然年份()的回报是我的预期。
有人可以解释isoyear
和year
之间行为的差异吗?我想不出任何我想要2015年至2015年的2015年回归的情况。
答案 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的计算。