2012-03-14 7 views
4

J'ai un objet zoo dans R qui contient des données quotidiennes et qui manque les week-ends. je reçois l'erreur lorsque je tente d'exécuter certaines fonctions (par exemple ar()) sur l'objet:séries temporelles internes NA, zoo, R

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

Si je fais:

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

Cela est logique car quand zoo tente de convertir les choses à ts , les week-ends manquent fondamentalement. Autre que de convertir des choses à un vecteur en utilisant coredata(zoo_object) et en exécutant ar() sur cela, est-il un moyen de dire à R d'ignorer les données manquantes?

Merci

Répondre

6

Je crois comprendre que chaque jour est représenté dans vos données, y compris les jours de semaine et le week-end mais les jours pour lesquels aucune donnée est présent sont NA (par opposition à ne pas être présent du tout). À l'avenir, veuillez fournir quelques données de test pour plus de clarté.

En dehors de votre solution, si vous avez suffisamment de données, vous pouvez effectuer une ar sur données hebdomadaires que par l'extraction de la dernière valeur non manquante au plus tard le vendredi:

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] 

(S'il n'y a pas manquants vendredi, il peut être raccourci en remplaçant na.locf(z) avec z.)

une autre possibilité est d'utiliser 1, 2, ... pour les temps, mais leur donner des noms dans ce cas, vous pouvez toujours savoir à quelle date appartient un point en vérifiant le nom de son heure.

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

méthode Simplest sera convertir l'objet ZOO en data.frame objet par par exemple (z1 est objet zoo):

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

puis le convertir en objet de séries chronologiques.

ts(dz1, frequency=5) 
Questions connexes