Подтвердить что ты не робот

Как вы конвертируете дату POSIX в день года в R?

В заголовке есть: как вы конвертируете дату POSIX в день года?

4b9b3361

Ответ 1

Альтернативой является форматирование объекта "POSIXt" с помощью strftime():

R> today <- Sys.time()
R> today
[1] "2012-10-19 19:12:04 BST"
R> doy <- strftime(today, format = "%j")
R> doy
[1] "293"
R> as.numeric(doy)
[1] 293

что предпочтительнее помнить, что день года основан на нулевом значении в стандарте POSIX.

Ответ 2

Как ?POSIXlt показывает, что суффикс $yday до даты POSIXlt (или даже вектор такого) преобразуется в день года. Помните, что POSIX считает январь 1 как день 0, поэтому вы можете добавить 1 к результату.

Мне было неловко долго находить это, поэтому я подумал, что задаю и отвечу на мой собственный вопрос.

В качестве альтернативы отличный lubridate пакет предоставляет функцию yday, которая является только оболочкой для вышеуказанного метода. Он удобно определяет аналогичные функции для других единиц (month, year, hour,...).

today <- Sys.time()
yday(today)

Ответ 3

Я понимаю, что не совсем то, что искал плакат, но мне нужно было преобразовать даты даты POSIX в дробный день года для анализа временных рядов и в итоге это сделало:

today <- Sys.time()

doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')

Ответ 4

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

as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160

Ответ 5

Что делать, если вам нужно сделать наоборот? Если я хочу преобразовать день в дату?

Например - я хочу знать, какой будет 200-й день в году?