1

Обычно я вычисляю неделю года по стандартной маске формата даты %Y%W До 2019 года это работало довольно хорошо, но в последние дни я заметил, что первая неделя 2019 года (2018/12/31-2019/01/06) показана как последняя неделя № 53 из 2018 года. И только неделя 2019/01/07-2019/01/13 является первой неделей 2019 года. Я проверил, правильно ли это.

Везде можно увидеть, что неделя 2018/12/31-2019/01/06 в настоящее время является первой неделей 2019 года. И даже Oracle знает это to_char(..., 'yyyyiw') , а R - нет. По крайней мере, он должен иметь такое же мнение.

Это имеет значение для меня, и я думаю, что это похоже на ошибку. Я использую R 3.5.0.

1 ответ1

1

Видишь ?strftime:

 ‘%U’ Week of the year as decimal number (00-53) using Sunday as
      the first day 1 of the week (and typically with the first
      Sunday of the year as day 1 of week 1).  The US convention.

 ‘%V’ Week of the year as decimal number (01-53) as defined in ISO
      8601.  If the week (starting on Monday) containing 1 January
      has four or more days in the new year, then it is considered
      week 1.  Otherwise, it is the last week of the previous year,
      and the next week is week 1.  (Accepted but ignored on
      input.)

 ‘%W’ Week of the year as decimal number (00-53) using Monday as
      the first day of week (and typically with the first Monday of
      the year as day 1 of week 1).  The UK convention.

Маска формата IW в Oracle возвращает номер недели ISO года, т.е. %V в R:

R> x <- as.Date("2018-12-28") + 0:10
R> data.frame(date=x, weeknum=format(x, "%V"))
         date weeknum
1  2018-12-28      52
2  2018-12-29      52
3  2018-12-30      52
4  2018-12-31      01
5  2019-01-01      01
6  2019-01-02      01
7  2019-01-03      01
8  2019-01-04      01
9  2019-01-05      01
10 2019-01-06      01
11 2019-01-07      02

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .