2012-03-14 30 views
4

私は毎日のデータを持ち、週末が欠落している動物園のオブジェクトをRに持っています。私は、オブジェクトの上に(たとえばar()用)いくつかの機能を実行しようとすると、私はエラーを取得:内部NA時系列、動物園、R

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

私が行う場合:動物園がしようとしたときTSに物事を変換するため、

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

これは理にかなっています週末は本質的に欠けています。 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] 

を(なしがある場合行方不明の金曜日それはzna.locf(z)を交換することによって短縮することができます。)

別の可能性 1を使用することで、2、...回が、それらにあなたが常に可能性がある場合に名前を付けます時間の名前をチェックすることによって、ポイントが所属する日付を調べることができます。

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

次いで、時系列オブジェクトに変換:

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

最も簡単な方法は、(z1動物園オブジェクトである)、例えば によってdata.frameオブジェクトに動物園のオブジェクトを変換するであろう。

ts(dz1, frequency=5) 
関連する問題