У меня есть данные с датой в форме yyyy-ww
, где ww
- номер недели в двух цифрах. Диапазон данных 2007-01
- 2010-30
. Соглашение о подсчете недель - это ISO 8601, который, как вы можете видеть здесь в статье "Неделя числа" в Википедии, иногда достигает 53 недель в году. Например, для этой системы в 2009 году было 53 недели, см. Номера недель в этот календарь ISO 8601. (См. Другие годы, согласно статье Википедии, 53-я неделя довольно редка.)
В принципе, я хочу прочитать дату недели, преобразовать ее в объект Date
и сохранить ее в отдельный столбец в data.frame
. В качестве теста я преобразовал объекты Date
в форматы yyyy-ww
на format([Date-object], format = "%Y-%W"
, и это породило ошибку в 2009-53
. Эта неделя не может быть интерпретирована как дата R
. Это очень странно, так как другие годы, которые не имеют 53-й недели (в стандарте ISO 8601), преобразуются штрафом, например 2007-53
, тогда как другие годы, которые также не имеют 53-й недели (в стандарте ISO 8601), также терпят неудачу, такие как 2008-53
Следующий минимальный пример демонстрирует проблему.
Минимальный пример:
dates <- c("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02")
as.Date(x = paste(dates, 1), format = "%Y-%W %w")
# [1] "2009-12-14" "2009-12-21" "2009-12-28" NA "2010-01-04"
# [6] "2010-01-11"
other.dates <- c("2007-53", "2008-53", "2009-53", "2010-53")
as.Date(x = paste(other.dates, 1), format = "%Y-%W %w")
# [1] "2007-12-31" NA NA NA
Вопрос в том, как мне получить R
, чтобы принимать номера недель в формате ISO 8601?
Примечание. Этот вопрос суммирует проблему, с которой я боролся в течение нескольких часов. Я искал и нашел различные полезные сообщения, такие как этот, но никто не решил проблему.