簡體   English   中英

如何將 POSIX 日期轉換為一年中的某一天?

[英]How do you convert POSIX date to day of year?

標題是:如何將 POSIX 日期轉換為年份?

另一種方法是使用strftime()格式化"POSIXt"對象:

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 標准中的年份是從零開始更可取。

正如?POSIXlt揭示的那樣, POSIXlt日期的$yday POSIXlt后綴(或什POSIXlt的向量)將轉換為一年中的某一天。 請注意,POSIX 將 1 月 1 日計為第 0 天,因此您可能希望在結果中加 1。

我花了很長時間才找到這個,所以我想我會問並回答我自己的問題

可替代地,優良lubridate包提供yday功能,這僅僅是用於上述方法的包裝。 它方便地為其他單位( monthyearhour 、...)定義了類似的函數。

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

我意識到這不是海報所要尋找的,但我需要將 POSIX 日期時間轉換為一年中的小數天以進行時間序列分析,並最終這樣做:

today <- Sys.time()

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

data.table包還提供了一個data.table yday()函數。

require(data.table)
today <- Sys.time()
yday(today)

這是我的做法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM