2016-09-04 6 views
1

Ich habe ein Problem mit der Umwandlung eines Datenrahmens in ein Zeitreihenobjekt. Der Datenrahmen ist olympic von fpp PaketDatenrahmen mit fehlenden Daten in Zeitreihe transformieren

library(fpp) 
olympic 

Wie verwandeln wir diesen Datenrahmen eine Jahr Spalte mit Lücken in eine Zeitreihe mit mit fpp Paket für die Prognose verwendet werden?

Ich versuchte

olympic_new <- ts(olympic[,-1], start=1896, end=1996, deltat=4) 

aber das funktioniert nicht, weil die olympics während des Krieges eine Lücke länger als 4 Jahre. Wie kann ich die Spalte in der olympic als Index des neuen ts Objekts verstehen

Mein Endziel ist es, eine Prognosefunktion auf das neue Objekt zu verwenden, wie zum Beispiel:

meanf(olympic_new, h=4) 

Antwort

1

Wenn Sie dput(olympic) und kopieren Sie sich in Ihrer Frage verwenden, wäre es leichter für uns sein.

olympic <- 
structure(list(Year = c(1896L, 1900L, 1904L, 1908L, 1912L, 1920L, 
1924L, 1928L, 1932L, 1936L, 1948L, 1952L, 1956L, 1960L, 1964L, 
1968L, 1972L, 1976L, 1980L, 1984L, 1988L, 1992L, 1996L), time = c(54.2, 
49.4, 49.2, 50, 48.2, 49.6, 47.6, 47.8, 46.2, 46.5, 46.2, 45.9, 
46.7, 44.9, 45.1, 43.8, 44.66, 44.26, 44.6, 44.27, 43.87, 43.5, 
43.49)), .Names = c("Year", "time"), class = "data.frame", row.names = c(NA, 
-23L)) 

Sie nur Pad einige NA wo es gebraucht wird.

year <- seq.int(1896L, 1996L, by = 4L) 
y <- rep.int(NA, length(year)) 
y[match(olympic$Year, year)] <- olympic$time 

olympic_new <- ts(y, start = 1896, end = 1996, deltat = 4) 

#Time Series: 
#Start = 1896 
#End = 1996 
#Frequency = 0.25 
# [1] 54.20 49.40 49.20 50.00 48.20 NA 49.60 47.60 47.80 46.20 46.50 NA 
#[13] NA 46.20 45.90 46.70 44.90 45.10 43.80 44.66 44.26 44.60 44.27 43.87 
#[25] 43.50 43.49 

Dann

meanf(olympic_new,h=4) 

#  Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 
#2000  46.51957 42.93628 50.10285 40.91319 52.12594 
#2004  46.51957 42.93628 50.10285 40.91319 52.12594 
#2008  46.51957 42.93628 50.10285 40.91319 52.12594 
#2012  46.51957 42.93628 50.10285 40.91319 52.12594 
+0

Brilliant vielen Dank! Ich steckte in diesem Problem fest. Thx auch für die dput-Funktion, wusste ich nicht. Das war meine erste Frage im Stackoverflow. –

Verwandte Themen