2016-09-04 14 views
1

データフレームを時系列オブジェクトに変換する際に問題があります。日付のないデータフレームを時系列に変換する

データフレームはolympicからfppパッケージまでです。

library(fpp) 
olympic 

はどのように予測するためにfppパッケージに使用されるように時系列にギャップの年の列を持つ、このデータフレームを変換するのですか?

私は

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

を試みたが、戦争中olympicsが長い4年以上のギャップを持っていたので、これは動作しません。

olympicYear列は、新しいtsオブジェクトのインデックスとしてどのように使用できますか?

私の最終目標は、次のような、新しいオブジェクトに予測機能を使用することです:あなたは、あなたの質問でそれをdput(olympic)を使用してコピーした場合、それは私たちのために容易になるだろう

meanf(olympic_new, h=4) 

答えて

1

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)) 

NAが必要な場所に貼り付けます。

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 

その後

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

ブリリアントおかげでたくさん!私はこの問題に立ち往生した。 Thxもdput関数のために、私は知らなかった。これは私の最初のstackoverflowの質問でした。 –

関連する問題