【问题标题】:lubridate::isoyear() returns unexpected outputslubridate::isoyear() 返回意外的输出
【发布时间】:2017-11-27 11:11:58
【问题描述】:

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

library(lubridate)      

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

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

isoyear() 函数说 2014-12-31 是 2015 年,而 2015 说是 2014 年。显然 year() 的回报是我所期望的。

有人可以解释isoyear 和year 之间的这种行为差异吗?我想不出任何我希望 2014 年 12 月 31 日回归 2015 年的情况。

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    您必须考虑到,输出给出的是公历。

    ISO 年份编号在公历年初的星期五、星期六和星期日,或星期六和星期日,或只是星期日(如果适用)与公历年份的编号不同(即上一个 ISO 年的年末)和一个星期一、星期二和星期三,或者星期一和星期二,或者只是一个星期一,在公历年结束时(在下一个 ISO 年的第 1 周)。
    在 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 的计算。

    【讨论】:

      猜你喜欢
      • 2015-08-19
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2015-01-31
      • 2015-11-10
      相关资源
      最近更新 更多