【发布时间】:2015-06-10 22:39:26
【问题描述】:
参考这个问题:
Transforming a time-series into a data frame and back
我有一个从 2012 年 5 月开始到 2015 年 5 月的月平均值列表。最初看起来像这样:
head (AVG_LOSCAT2)
month AVG_LOSCAT YEAR MONTH
1 2012-05 5.342066 2012 05
2 2012-06 6.544096 2012 06
3 2012-07 6.448767 2012 07
4 2012-08 7.897919 2012 08
5 2012-09 8.908504 2012 09
6 2012-10 8.088083 2012 10
我这样做是为了让它转换成一个 ts 对象:
AVG_LOSCATSET<- AVG_LOSCAT2[, c(2)]
AVG_LOSCATSET<-round(AVG_LOSCATSET,digits= 1)
现在看起来像这样:
AVG_LOS_CATSET
[1] 5.3 6.5 6.4 7.9 8.9 8.1 10.1 12.0 14.7 10.6 8.4 6.3 6.7
[14] 7.4 9.8 9.3 15.1 11.7 11.9 20.7 19.0 9.2 18.1 6.4 8.2 7.9
[27] 11.7 11.8 9.8 10.4 9.8 21.3 12.9 14.0 8.2 4.8 19.7 NA
我转换为时间序列以获得这个可爱的输出:
AVG_LOSCATSET2<-ts(AVG_LOSCATSET,frequency = 12, start=c(2012,5))
AVG_LOSCATSET2
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 5.3 6.5 6.4 7.9 8.9 8.1 10.1 12.0
2013 14.7 10.6 8.4 6.3 6.7 7.4 9.8 9.3 15.1 11.7 11.9 20.7
2014 19.0 9.2 18.1 6.4 8.2 7.9 11.7 11.8 9.8 10.4 9.8 21.3
2015 12.9 14.0 8.2 4.8 19.7 NA
在这一点上,做任何事情都非常困难。我无法使用 ReporteRs 包将其放入报告中,因为它是一个 ts 对象。
这会将其转换为列表(我认为?):
tapply(AVG_LOSCATSET2, list(year = floor(time(AVG_LOSCATSET2)), month = month.abb[cycle(AVG_LOSCATSET2)]), c)
现在月份按字母顺序排列,2013 年 1 月的输出不稳定,2014 年 1 月的原始值似乎是 2015 年 1 月,而 2015 年 1 月奇怪的是 NULL。
month
year Apr Aug Dec Feb Jan Jul Jun Mar May Nov Oct Sep
2012 NULL 7.9 12 NULL NULL 6.4 6.5 NULL 5.3 10.1 8.1 8.9
2013 6.3 9.3 20.7 10.6 Numeric,2 9.8 7.4 8.4 6.7 11.9 11.7 15.1
2014 6.4 11.8 21.3 9.2 12.9 11.7 7.9 18.1 8.2 9.8 10.4 9.8
2015 4.8 NULL NULL 14 NULL NULL NA 8.2 19.7 NULL NULL NULL
如果我使用数字而不是月份的缩写,我仍然会遇到同样的问题。
tapply(AVG_LOSCATSET2, list(year = floor(time(AVG_LOSCATSET2)), month = cycle(AVG_LOSCATSET2)), c)
month
year 1 2 3 4 5 6 7 8 9 10 11 12
2012 NULL NULL NULL NULL 5.3 6.5 6.4 7.9 8.9 8.1 10.1 12
2013 Numeric,2 10.6 8.4 6.3 6.7 7.4 9.8 9.3 15.1 11.7 11.9 20.7
2014 12.9 9.2 18.1 6.4 8.2 7.9 11.7 11.8 9.8 10.4 9.8 21.3
2015 NULL 14 8.2 4.8 19.7 NA NULL NULL NULL NULL NULL NULL
关于如何修复这些影响 Jan 值的故障和/或将我的 ts 对象平滑转换为数据框、矩阵或表格的任何想法?
谢谢。
【问题讨论】:
-
你的浮点数(时间是一年+分数)和
floor函数有问题。见stackoverflow.com/questions/4973462/…
标签: r time-series tapply