2011-09-12 4 views
2

J'ai un jeu de données dans R qui contient des valeurs mensuelles. Cependant, certains mois manquent. Par exemple:calculer les mois manquants dans les timeseries

"2001-09-01" "2001-10-01" "2001-12-01" "2002-02-01"

novembre 2001 manque et Jan 2002 est manquante. Comment puis-je inclure ces mois dans les séries temporelles et ajouter une valeur de 0?

Merci!

+0

Vous recevrez des réponses plus utiles si vous fournissez structure de votre objet de données. Veuillez fournir la sortie de 'dput (head (mydata, 10))'. –

Répondre

2

En supposant que vous avez vos données dans un data.frame, appelé dat1:

dat1 <- data.frame(
    date = as.Date(c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01")), 
    val = 1:4 
) 

Vous pouvez alors créer un second data.frame qui contient une seule colonne avec toutes les dates dont vous avez besoin. Utilisez seq.Date pour créer cette séquence:

dat2 <- data.frame(
    date = seq(as.Date("2001-09-01"), by="1 month", length.out=7) 
) 

Ensuite, il est une opération merge simple:

merge(dat1, dat2, all=TRUE) 
     date val 
1 2001-09-01 1 
2 2001-10-01 2 
3 2001-11-01 NA 
4 2001-12-01 3 
5 2002-01-01 NA 
6 2002-02-01 4 
7 2002-03-01 NA 

Les valeurs manquantes sont NA mais vous pouvez ensuite utiliser subsetting pour les mettre à 0, si vous le désirez.

4

Comme il s'agit d'une série mensuelle, il peut être logique de la représenter en tant que série avec "yearmon" fois. Les premières lignes établissent les données de test et les deux dernières lignes font le remplissage réel:

# set up input data as a zoo series 
library(zoo) 
d <- c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01") 
z <- zoo(1:4, as.yearmon(d)) 

# merge with zero width series 
g <- seq(start(z), end(z), 1/12) 
zz <- merge(z, zoo(, g), fill = 0) 

Si une série "ts" on désire utiliser ensuite as.ts(zz) ou si une série de zoo avec des temps de "Date" classe voulait essayer alors: time(zz) <- as.Date(time(zz)).

Notez que ceci est aussi discuté avec plusieurs exemples FAQ 13 du zoo FAQ disponible via la commande R vignette("zoo-faq") ou sur le net à:

http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf

Questions connexes