Преобразование дня года в дату

Как преобразовать день в году в дату? Например, какая дата 104-го дня 2004 года?

Это противоположно Как преобразовать дату POSIX в день года в R?


person Tomas    schedule 13.06.2014    source источник


Ответы (3)


Я обнаружил, что @TMS answer игнорирует год, указанный в источнике, заменяя его фактическим годом, когда вы выполняете команду ( как нашел @Shekeine). Однако это работает нормально:

as.Date(104, origin = "2014-01-01")

ВНИМАНИЕ: в этом случае день года отсчитывается от нуля!

person user2739472    schedule 22.08.2016
comment
Спасибо тебе за это. Я не уверен, почему мой код больше не работает (я думаю, что тогда он работал). К вашему ответу также добавлено важное предупреждение. - person Tomas; 22.09.2016
comment
Как отмечалось выше, этот код дает день года, отсчитываемый от нуля (т. е. 1 января — это DOY=0). Если вам нужен более типичный день года, основанный на 1 (т. Е. 1 января, это DOY = 1), вы должны использовать origin="2013-12-31" - person DirtStats; 20.11.2018

Вот как я это делаю:

as.Date(104, format = "%j", origin = "1.1.2014")
# "2014-04-15"

PS: для тех, кто интересуется, рекомендуется ли отвечать на мой собственный вопрос, посмотрите здесь: https://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-если-я-знал-ответ-до-спроса

person Tomas    schedule 13.06.2014
comment
Привет, ваш код выше возвращает [1] "2015-04-15" для меня. Выполнение as.Date(1, format = "%j", origin=paste0("1.1.", "2015")) возвращает "2015-01-02". Что мне здесь не хватает? - person shekeine; 09.05.2015
comment
Я не уверен, почему мой код больше не работает (я думаю, что тогда он работал). Я принял другой ответ. - person Tomas; 22.09.2016
comment
@shekeine Я не понял, что не так с твоим выводом. Если вы обеспокоены тем, что он возвращается 2 января - я думаю, что в этом случае отсчет начинается с 0. - person Claud H; 20.02.2019

as.Date(2, origin = '2014-01-01')

Что касается проблемы с приведенным выше кодом, выдающим вывод как 2014-01-03.

Вы можете просто указать происхождение как последний день предыдущего года.

as.Date(2, origin = '2013-12-31')

Это работает таким образом.

person aaloksk    schedule 12.07.2020