2015-04-07 24 views
1

使用庫「fpp」和對象「elecequip」。見下面的代碼。爲什麼數據不會在出口上顯示月份和年份?什麼「類型」的對象是「elecequip」,我如何得到這些數據的月份和年份?時間序列數據和R對象類型

fit <- stl(elecequip, s.window=5) 
plot(elecequip, col="gray", main="Electrical equipment manufacturing", 
    ylab="New orders index", xlab="") 
lines(fit$time.series[,2],col="red",ylab="Trend") 
write.table(elecequip, "ELECT DATA.txt", sep="\t") 

輸出看起來像這樣前2年的數據:

"x" 
"1" 79.43 
"2" 75.86 
"3" 86.4 
"4" 72.67 
"5" 74.93 
"6" 83.88 
"7" 79.88 
"8" 62.47 
"9" 85.5 
"10" 83.19 
"11" 84.29 
"12" 89.79 
"13" 78.72 
"14" 77.49 
"15" 89.94 
"16" 81.35 
"17" 78.76 
"18" 89.59 
"19" 83.75 
"20" 69.87 
"21" 91.18 
"22" 89.52 
"23" 91.12 
"24" 92.97 
+1

你能添加什麼輸出實際上是? – mmmmmpie

回答

3

這是一個時間序列數據。

> class(elecequip) 
[1] "ts" 

> str(elecequip) 
Time-Series [1:191] from 1996 to 2012: 79.4 75.9 86.4 72.7 74.9 ... 

有可能是保存打印輸出作爲一個平坦的桌面(我認爲這是你以後在做什麼)的更好的方法,但sink似乎工作。

sink(file = "test.txt") 
print(elecequip) 
sink() 

test.txt文件的頭:

 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1996 79.43 75.86 86.40 72.67 74.93 83.88 79.88 62.47 85.50 83.19 84.29 89.79 
1997 78.72 77.49 89.94 81.35 78.76 89.59 83.75 69.87 91.18 89.52 91.12 92.97 
1998 81.97 85.26 93.09 81.19 85.74 91.24 83.56 66.45 93.45 86.03 86.91 93.42 
1999 81.68 81.68 91.35 79.55 87.08 96.71 98.10 79.22 103.68 101.00 99.52 111.94 
2000 95.42 98.49 116.37 101.09 104.20 114.79 107.75 96.23 123.65 116.24 117.00 128.75 
+0

你可以使用像tapply(x,list(floor(time(x)),cycle(x)),c)'這樣的類似矩陣的對象。換句話說,'sink'看起來不錯:-) – A5C1D2H2I1M1N2O1R2T1

1

這是一個黑客攻擊的一位,但(拉出的stats:::print.ts必要部分):如果你想在

library("fpp") 
pp <- .preformat.ts(elecequip,TRUE) 
storage.mode(pp) <- "numeric" 
pp <- as.data.frame(pp) 

長格式(當然有其他方法可以在Hadleyverse 2中進行此操作):

library("tidyr") 
library("dplyr") 
pp %>% add_rownames("year") %>% gather(month,value,-year)