У меня есть данные с датой в форме 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?
Примечание. Этот вопрос суммирует проблему, с которой я боролся в течение нескольких часов. Я искал и нашел различные полезные сообщения, такие как этот, но никто не решил проблему.