web-dev-qa-db-ja.com

RでPOSIX日付を年のどのように変換しますか?

タイトルにはそれがあります:POSIXの日付をどのように年の日付に変換しますか?

42
Gregor

別の方法は、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標準では年の日がゼロベースであることを思い出すよりも望ましい方法です。

53
Gavin Simpson

?POSIXltが明らかにするように、POSIXlt日付のサフィックス$yday(またはそのようなベクトルでさえ)は年の日に変換されます。 POSIXは1月1日を0日としてカウントするため、結果に1を追加する必要がある場合があることに注意してください。

これを見つけるのに恥ずかしいほど長い時間がかかったので、私は 自分の質問に答えてください と思いました。

または、優れたlubridateパッケージは、上記のメソッドの単なるラッパーであるyday関数を提供します。他のユニット(monthyearhour、...)に対して同様の関数を便利に定義します。

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

ポスターが探していたものではないことがわかりますが、時系列分析のためにPOSIX date -timesfractionalに変換して終了する必要がありましたこれをやる:

today <- Sys.time()

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

これは私がそれを行う方法です:

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