Почему as.Date возвращает NA для действительной даты? - PullRequest
1 голос
/ 01 мая 2020

Следующий код приводит к NA. Почему?

1002

В 2015 году было 53 недели, поэтому с датой должно быть все в порядке.

Ответы [ 2 ]

4 голосов
/ 01 мая 2020

С ?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"
1 голос
/ 01 мая 2020

В 2015 году фактически учитывается 52 недели.

strftime(as.Date("2015-12-31"), "%W")
# [1] "52"

Остальные дни считаются в 2016 году как неделя 0.

strftime(as.Date("2016-01-01"), "%W")
# [1] "00"

Например, 1 января 2018 года 1-я неделя (потому что в 2017 году, вероятно, было 52 недели).

strftime(as.Date("2018-01-01"), "%W")
# [1] "01"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...