2012-03-14 41 views
4

我在R有一個動物園對象,每天都有數據並且週末不見了。當我嘗試在對象上運行(例如ar())的一些功能我得到的錯誤:內部NA時間序列,動物園,R

mkt.ar <- ar(zoo_object) 
Error in na.fail.default(as.ts(x)) : missing values in object 

如果我做的:

mkt.ar <- ar(zoo_object, na.action=na.omit) 
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs 

這是有道理的,當動物園嘗試的東西轉換成TS,因爲,週末是天生缺失的。除了使用coredata(zoo_object)將事物轉換爲矢量並在其上運行ar(),有沒有辦法告訴R跳過缺失的數據?

感謝

回答

6

據我瞭解,每天在你的數據,包括工作日和週末但沒有數據存在的日子代表的NA(相對於不存在的話)。未來,請提供一些測試數據以獲得更好的清晰度。

從您的解決方案

除此之外,如果你有足夠多的數據,你只能通過日或之前提取的最後一個非缺失值週五進行的每週數據ar

library(zoo) 

# test data 
library(chron) # is.weekend 
z <- zoo(100:130, as.Date("2000-01-01") + 0:30) 
z[is.weekend(time(z))] <- NA 

# extract Fridays 
zfri <- na.locf(z)[format(time(z), "%w") == 5] 

(如果沒有缺少週五它可以通過與z更換na.locf(z)縮短。)

另一種可能性是使用1,2,...的時間,但給他們的名字這種情況下,你總是可以通過檢查時間的名稱來確定一個點屬於哪個日期。

z1 <- na.omit(z) 
time(z1) <- setNames(seq_along(z1), time(z1)) 
-1

簡單的方法將是由 動物園對象轉換成data.frame對象例如(z1是動物園對象):

dz1<-data.frame(na.omit(z1)) 

然後將其轉換爲時間序列的對象。

ts(dz1, frequency=5) 
相關問題