2016-11-17 102 views
0

我有一些日期需要轉換爲儒略日。這是數據我有將年份轉換爲Julian日(自今年年初以來的天數)

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該轉換日期爲儒略日。對於例如

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

但是,這需要日期在一個特定的順序,包括我沒有的一年。有什麼辦法可以將我的日期是字符,而且沒有年份呢轉換成朱利安?

另外,今年不是閏年。

儒略日暗示今年這樣1月1日這一天是1,1月2日是2,依此類推....

+0

Julian天意味着今年的一天,所以1月1日是1,2月1日是2等等...... – user53020

+0

哦,是的。感謝您指出。 – user53020

+1

如果你不知道這一年,那麼你不知道今年是不是閏年,所以Julian日不可確定(至少在二月之後)。 –

回答

3

基礎R具有功能julian可以產生你與paste0一起找什麼和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年是不是閏年:

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" 

以供將來參考,也可以設置起點本身,使用的由來參數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" 

應該清楚,原點可以設置爲您希望的任何日期,以便這可以用於計算任何日期之後(或之前)的天數。

相關問題