2016-06-28 19 views
0

I folgende Funktion haben:R: ts() mit NA Daten

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

ts. dat gibt

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 

, jedoch

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

kehrt

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

Ich versuchte na.action=na.pass, aber es hat nicht funktioniert. Irgendeine Idee, wie man mit der NA umgeht, wenn das der Grund ist?

Auch: Irgendeine Chance, das erste Datum von dat als Start zu nehmen?

Antwort

1

Irgendeine Idee, wie man mit der NA umgeht, wenn das der Grund ist?

Sie müssen na.action = na.omit verwenden, das heißt, NA fallen, wenn die Berechnung zu tun.

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

stl

Die na.pass einfach NA als normale Beobachtung übernehmen. Aber es wird immer noch Fehler als stl() später ruft kompilierten Code und kann NA nicht erkennen.

Haben Sie eine Chance, das erste Datum von dat als Start zu nehmen?

einen Blick auf die Beispiele am unteren Rand des ?ts haben:

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

ab Juli 1954 start = c(1954, 7) setzen zu starten.

+0

Perfekt, danke. Ich frage mich nur, ob es irgendwie möglich ist, dies zu automatisieren, so dass diese Spalte nicht bei jedem neuen Datensatz, der bereits ein Datum hat, angepasst werden muss. Ich dachte, es könnte möglich sein, diese Information aus der ersten "Monat" -Zeile von dat zu lesen. – JohnnyDeer