2016-11-17 8 views
0

私はユリウス日に変換する必要がある日付があります。これは私が私がユリウス日にdateを変換したい年のない日付をユリウス暦の日付に変換します。

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

[1] "character" 

を持っているデータです。したがって、上記の日付の、ユリウス日は次のようになります。

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

ユリウス日はその年の1日を意味するので、1月1日、2月1日は2など.... – user53020

+0

ああ、はい。それを指摘してくれてありがとう。 – user53020

+1

あなたがその年を知らないならば、あなたはその年がうるう年かどうかわからないので、ユリウス日は(少なくとも2月後には)決定できません。 –

答えて

3

ベースRは、あなたがpaste0と一緒に探しているものを作り出すことができる機能julianを持っていますおよびas.Date。あなたが希望する結果を得るために1を追加することができますので、これは1970年1月1日からの日数としてカウントされていることを

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

注意は、(それが0から始まります)。

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" 

原点は希望する任意の日付に設定することができます。これを使用して、任意の日付に続く(またはそれより前の)日数を計算することができます。

関連する問題