时间序列数据和R对象类型

时间:2015-04-07 14:10:38

标签: r

使用库“fpp”和对象“elecequip”。见下面的代码。为什么数据不会在出口上显示月份和年份?什么“类型”的对象是“elecequip”,我如何得到这些数据的月份和年份?

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

输出在前两年的数据中看起来像这样:

"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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)