タイトルにはそれがあります: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
(またはそのようなベクトルでさえ)は年の日に変換されます。 POSIXは1月1日を0日としてカウントするため、結果に1を追加する必要がある場合があることに注意してください。
これを見つけるのに恥ずかしいほど長い時間がかかったので、私は 自分の質問に答えてください と思いました。
または、優れたlubridate
パッケージは、上記のメソッドの単なるラッパーであるyday
関数を提供します。他のユニット(month
、year
、hour
、...)に対して同様の関数を便利に定義します。
today <- Sys.time()
yday(today)
ポスターが探していたものではないことがわかりますが、時系列分析のためにPOSIX date -timesをfractionalに変換して終了する必要がありましたこれをやる:
today <- Sys.time()
doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')
これは私がそれを行う方法です:
as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160