2010-08-24 16 views
16

Eksik günlerle dolu bir hayvanat bahçesi zaman serisi var. Bunu doldurmak ve sürekli bir seriye sahip olmak için ...R: Bir zaman dizisinde eksik tarihleri ​​doldurmak?

Baştan sona bir chron tarih-saat dizisi oluşturuyorum.

Dizilerimi bununla birleştiriyorum.

Na'locf'i, NA'ları las obsservation ile değiştirmek için kullanıyorum.

Sentetik kron dizisini kaldırırım.

Aynı şeyi daha kolay yapabilir miyim? Belki bazı endeks işlevi frekans ile ilgili?

cevap

7

Dizin içeren "boş" zoo nesnesini kullanırsanız biraz daha kolay.

> x <- zoo(1:10,Sys.Date()-10:1)[c(1,3,5,7,10)] 
> empty <- zoo(order.by=seq.Date(head(index(x),1),tail(index(x),1),by="days")) 
> na.locf(merge(x,empty)) 
2010-08-14 2010-08-15 2010-08-16 2010-08-17 2010-08-18 
     1   1   3   3   5 
2010-08-19 2010-08-20 2010-08-21 2010-08-22 2010-08-23 
     5   7   7   7   10 

DÜZENLEME: gün içi veriler için (Gabor mükemmel xout= öneri kullanarak):

> index(x) <- as.POSIXct(index(x)) 
> na.locf(x, xout=seq(head(index(x),1),tail(index(x),1),by="15 min")) 
+0

Zaman harcamam 15dk ve kron ise nasıl olur? Teşekkürler – skan

+0

“? Seq.dates” başlıklı kısma baktığımda, “seq” ile bir gün içi “chron” dizisi oluşturabileceğiniz gibi görünmüyor. Farklı bir dizin sınıfı kullanmanızı tavsiye ederim. –

5

Bu na ait xout = argüman kullanır hayvanat bahçesi SSS http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf sorusu 13 kaplıdır. Birleştirme adımı ortadan kaldırmak için locf. Bu özellik yakın zamanda eklendiğinden beri hayvanat bahçesi 1.6.4 veya daha yeni bir sürüm kullandığınızdan emin olun.

İlgili konular