В заголовке есть: как вы конвертируете дату POSIX в день года?
Как вы конвертируете дату POSIX в день года в R?
Ответ 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-й день в году?