1

次の日付/時刻文字列をzooオブジェクトに変換しようとしています。

2004:071:15:23:41.87250

2004:103:15:24:15.35931

年:doy:時:分:秒

日付/時刻の文字列は、ヘッダーなしでデータフレームに保存されます。Rでこれを行うための最良の方法は何ですか?

乾杯!

Gavinの回答に基づいて編集:

# read in time series from CSV file; each entry as described above
timeSeriesDates <- read.csv("timeseriesdates.csv", header = FALSE, sep = ",")
# convert to format that can be used as a zoo object
timeSeriesDatesZ <- as.POSIXct(timeSeriesDates$V1, format = "%Y:%j:%H:%M:%S")
4

2 に答える 2

7

通常の方法でデータをRに読み込みます。次のようなものになります。

dats <- data.frame(times = c("2004:071:15:23:41.87250", "2004:103:15:24:15.35931"))
dats

POSIXtこれらは、次の方法でクラスの1つに変換できます。

dats <- transform(dats, as.POSIXct(times, format = "%Y:%j:%H:%M:%S"))

また

data$times <- as.POSIXct(dats$times, format = "%Y:%j:%H:%M:%S"))

その後、動物園のオブジェクトで使用できます。引数?strftimeで使用されるプレースホルダーの詳細については、を参照してください。format基本的%jに、その年のプレースホルダーの日です。

動物園ビットを実行するには、実際の時系列のダミーデータを使用して実行します

ts <- rnorm(2) ## dummy data
require(zoo)   ## load zoo
tsZoo <- zoo(ts, dats$times)

最後の行は次のようになります。

> tsZoo
2004:071:15:23:41.87250 2004:103:15:24:15.35931 
              0.3503648              -0.2336064

分数秒で注意すべきことの1つは、i)浮動小数点演算を使用して、正確な分数を記録できない場合があることです。また、Rのオプションの値を指定すると、Rは完全な小数秒を表示しない場合があります。digits.secs?optionsこの特定のオプションとその変更方法の詳細については、を参照してください。

于 2012-06-06T20:11:33.893 に答える
0

最初の文字列のコメント付きの例を次に示します。

R> s <- "2004:103:15:24:15.35931"
R> # split on the ":" and convert the result to a numeric vector
R> n <- as.numeric(strsplit(s, ":")[[1]])
R> # Use the year, hour, minute, second to create a POSIXct object
R> # for the first of the year; then add the number of days (as seconds)
R> ISOdatetime(n[1], 1, 1, n[3], n[4], n[5])+n[2]*60*60*24
[1] "2004-04-13 16:24:15 CDT"
于 2012-06-06T20:11:48.620 に答える