2016-06-28 80 views
0

我具有以下功能:R:TS()與NA數據

ts.dat <- ts(data=dat$sales, start = 1, frequency = 12) 

TS。 DAT返回

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1 9000 8600 8500 8600 8500 8300 8600 9100 8800 8700 9300 7900 
2 7900 8800 8500 8900 9000 8800 8800 9100 9500 8900 9200 8400 
3 8400 9200 9500 9100 8700 8300 NA 

然而,

plot(stl(ts.dat, s.window=12)) 

回報

Error in na.fail.default(as.ts(x)) : missing values in object'plot': 

我試過na.action=na.pass,但沒有奏效。任何想法如何處理NA,如果這是原因?

另外:是否有機會以dat開頭的第一個日期?

回答

1

任何想法如何處理NA,如果這是原因?

您需要使用na.action = na.omit,即在計算時刪除NA

plot(stl(ts.dat, s.window=12, na.action = na.omit)) 

stl

na.pass將簡單地假設NA作爲普通觀察。但它仍然會產生錯誤,因爲stl()稍後調用編譯的代碼並且無法識別NA

是否有機會以dat開頭的第一個日期?

看一看例子在?ts底部:

## Using July 1954 as start date: 
gnp <- ts(cumsum(1 + round(rnorm(100), 2)), 
      start = c(1954, 7), frequency = 12) 

從1954年7月開始,把start = c(1954, 7)

+0

完美,謝謝。我只想知道是否可以自動執行此操作,以避免每個已經有日期的新數據集都需要調整此列。我認爲可以從dat的第一個「月」行讀取這些信息。 – JohnnyDeer