簡體   English   中英

將沒有年份的日期轉換為儒略日(從年初開始的天數)

[英]Convert date without year into Julian day (number of days since start of the year)

我有一些約會需要轉換成儒略時代。 這是我的數據

date <- c("21-Jul", "14-Jul", "08-Jul", "08-Jul","16-Jul")
class(date)

[1] "character"

我想將date轉換為儒略日。 因此,對於上述日期,儒略日將是:

date
202,195,189,189,197 

我找到了一個as.POSIXlt函數, as.POSIXlt日期轉換為儒略日。 例如

tmp <- as.POSIXlt("16Jun10", format = "%d%b%y")
tmp$yday
# [1] 166

但這需要按特定的順序排列日期,包括我沒有的年份。 有什么辦法可以將我沒有字符的日期轉換為朱利安(Julian)?

另外,今年不是a年。

朱利安天意味着一年中的某一天,因此1月1日為1,2月1日為2,依此類推。

base R有一個函數julian ,可以與paste0as.Date一起生成您要查找的as.Date

julian(as.Date(paste0("1970-", date), format="%Y-%d-%b"))
[1] 201 194 188 188 196
attr(,"origin")
[1] "1970-01-01"

請注意,這是從1970年1月1日開始的天數(從0開始),因此您可以加1以獲得所需的結果。

julian(as.Date(paste0("1970-", date), format="%Y-%d-%b")) + 1
[1] 202 195 189 189 197

我手動檢查了1970年不是a年:

seq(as.Date("1970-02-25"), as.Date("1970-03-02"), by="day")
[1] "1970-02-25" "1970-02-26" "1970-02-27" "1970-02-28" "1970-03-01" "1970-03-02"

為了將來參考,也可以使用origin參數as.Date自己設置起點:

julian(as.Date(paste0("1980-", date), format="%Y-%d-%b"), origin=as.Date("1980-01-01"))
[1] 202 195 189 189 197
attr(,"origin")
[1] "1980-01-01"

應當清楚,可以將原點設置為您希望的任何日期,以便可以將其用於計算任何日期之后(或之前)的天數。

暫無
暫無

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

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