Как конвертировать дату POSIX в день года в R? - PullRequest
42 голосов
/ 31 октября 2011

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

Ответы [ 4 ]

52 голосов
/ 19 октября 2012

Альтернативой является форматирование объекта "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 начинается с нуля.

22 голосов
/ 31 октября 2011

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

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

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

today <- Sys.time()
yday(today)
3 голосов
/ 09 января 2015

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

today <- Sys.time()

doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')
0 голосов
/ 13 июня 2014

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

as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...