meineko’s blog

元つくばの某独立行政法人勤務の植物屋です。最近は、ほぼ、突発天体の話題です。

ユリウス日

昨日の問題は、日付を扱う関数は内部では、日の少数まで持っている模様

> d <- as.POSIXct("2009/8/4 21:10:00")
> as.double(d)/86400+2440588-0.5       #POSIXct型のままだと割り算で怒られる?86400=24*60*60 原点1970/1/1
[1] 2455048
> options(digits=11)             #表示桁数を変えるおまじない
> as.double(d)/86400+2440588-0.5
[1] 2455048.0069

> x <- read.csv("test.csv")
> x
date
1 2009/8/4 21:00:00
2 2009/8/4 21:10:00
3 2009/8/4 21:20:00

> d <- as.POSIXct(as.matrix(x))       #headerがじゃまなので、matrixに変換
> d
[1] "2009-08-04 21:00:00 JST" "2009-08-04 21:10:00 JST" "2009-08-04 21:20:00 JST"
> r <- as.double(d)/86400+2440588-0.5
> r
[1] 2455048 2455048 2455048
> options(digits=11)
> r
[1] 2455048.0000 2455048.0069 2455048.0139
> write.table(r,file="result2.txt",row.names=F,col.names=F) #結果の書き出し

こんなところでどうでしょう?
なんか、無駄が多そうですが?


なお、Rは、対話的に結果を確認しながらかけるので、デバグが楽です。
で、動いたら、copy&pasteで、適当な名前で保存しておけば、使い回しが利きます。


なお、OSXのR GUIだと、()や""の補完はしてくれるし、関数を入力していて()まで入れると、下に書式が表示されるので便利です。
Windows版もGUIがついてきますが、OSX用ほどは便利でないです。
Linixはよく知らないのですが、Javaで動くJGRってのがあるらしいです。