1
我想將數據幀轉換爲動物園對象,並有相當多的麻煩。無論我在read.zoo調用中做什麼,我都會得到下面的錯誤。我認爲甚至沒有必要列出時間戳的格式,因爲它已經是Posixlt,但事實並非如此。將數據幀轉換爲Zoo。麻煩Posixlt
您能否指點我正確的方向?
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
這是數據的樣本,
Date Open High Low Close
330 2014-01-03 15:00:00 544.95 545.10 544.80 544.86
331 2014-01-03 15:01:00 544.80 544.89 544.77 544.79
332 2014-01-03 15:02:00 544.84 544.90 544.79 544.80
333 2014-01-03 15:03:00 544.80 544.80 544.60 544.69
334 2014-01-03 15:04:00 544.75 544.80 544.66 544.75
335 2014-01-03 15:05:00 544.78 545.03 544.76 545.01
下面是可重複的代碼:
require (zoo)
data <- structure(list(Date = structure(list(sec = c(0, 0, 0, 0, 0, 0
), min = 0:5, hour = c(15L, 15L, 15L, 15L, 15L, 15L), mday = c(3L,
3L, 3L, 3L, 3L, 3L), mon = c(0L, 0L, 0L, 0L, 0L, 0L), year = c(114L,
114L, 114L, 114L, 114L, 114L), wday = c(5L, 5L, 5L, 5L, 5L, 5L
), yday = c(2L, 2L, 2L, 2L, 2L, 2L), isdst = c(0L, 0L, 0L, 0L,
0L, 0L)), .Names = c("sec", "min", "hour", "mday", "mon", "year",
"wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt")), Open = c(544.95,
544.8, 544.84, 544.8, 544.75, 544.78), High = c(545.1, 544.89,
544.9, 544.8, 544.8, 545.03), Low = c(544.8, 544.77, 544.79,
544.6, 544.66, 544.76), Close = c(544.86, 544.79, 544.8, 544.69,
544.75, 545.01)), .Names = c("Date", "Open", "High", "Low", "Close"
), row.names = 330:335, class = "data.frame")
data <- read.zoo(data, header = TRUE, index = 1, tz="", format = "%Y-%m-%d %H:%M:%S")
不幸的是,'read.zoo'目前的限制是它不處理POSIXlt索引輸入,但是上面的答案,首先將其轉換爲POSIXct,似乎是一個好方法。另一種方法是先將它轉換爲字符:'read.zoo(transform(data,Date = format(Date)),tz =「」)', –
謝謝你的評論。它現在可以使用hrbrmstr的代碼。我還沒有準備好讓它忽略原生R的日期格式,並且它在文檔中沒有公然地拼寫出來。我認爲把格式放在read.zoo調用中就足夠了。我會保持這種心態前進。 – mks212
Achim剛剛將其修正爲開發版本(現在可通過subversion提供,最終將在CRAN上提供),所以使用這種修復方法:'read.zoo(data)'。 –