首页 > 解决方案 > 为什么 as.Date 为有效日期返回 NA?

问题描述

以下代码导致 NA。为什么?:

as.Date(paste(2015,53,1),"%Y %W %u")

2015 年有 53 周,所以日期应该完全没问题。

标签: rdate

解决方案


来自?strptime

%W 以十进制数表示的一年中的第几周 (00–53),使用星期一作为一周的第一天(通常将一年中的第一个星期一作为第 1 周的第 1 天)。英国公约。

因此,一年中星期的十进制数%W范围为 0-53。第一个被认为是第一个星期一的那一周。2015 年从星期四(第 0 周)开始。所以 2015 年有 53 周,但周的范围是从 0 到 52,而不是从 1 到 53。

> as.Date(paste(2015,0,1),"%Y %W %u")
[1] "2015-01-05"
> as.Date(paste(2015,52,1),"%Y %W %u")
[1] "2015-12-28"

推荐阅读