2013-07-22 71 views
2

說,如果我有一個數據幀,如下所示:的R - 時間序列填充與NA

Date1 <- seq(from = as.POSIXct("2010-05-01 02:00"), 
      to = as.POSIXct("2010-10-10 22:00"), by = 3600) 
Dat <- data.frame(DateTime = Date1, 
        x1 = rnorm(length(Date1))) 

,其中每個測量結果之間的間隔爲1小時。如何在今年餘下時間用NAs填充這個數據幀,最終解決方案的長度應該是8760,即全年的小時測量。例如,我希望DateTime列的範圍從2010-01-01 00:00到2010-12-31 23:00,但是在已添加到原始日期的情況下,x1列爲NA數據框架(如果有意義的話)。我想提出一個解決方案,可以有多少年,即如果數據從2009年5月延長到2012年9月,那麼最終的解決方案應該有這個數據集,但缺少時間,即從2009年1月到2012年12月,用NA填充。我該如何解決這個問題?

回答

9

創建包含所有小時的新數據框,然後合併兩個數據框。

df2<-data.frame(DateTime=seq(from = as.POSIXct("2010-01-01 00:00"), 
          to = as.POSIXct("2010-12-31 23:00"), by = "hour")) 
merge(df2,Dat,all=TRUE) 
+0

謝謝。我從來沒有想過,如果沒有任何數據關聯,即只有時間,合併才能工作很棒的解決 – KatyB