将时间序列转换为数据框、矩阵或 table
Converting time series to data frame, matrix, or table
参考这个问题:
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 值的故障的任何想法 and/or 顺利地将我的 ts 对象转换为数据框、矩阵或 table?
谢谢。
您不需要时间序列,只需点击:
res=tapply(AVG_LOSCAT2$AVG_LOSCAT, list(year = AVG_LOSCAT2$YEAR, month = AVG_LOSCAT2$MONTH), round,2)
res
month
year 1 2 3 4 5 6 7 8 9 10 11 12
2012 NA NA NA NA NA 7.51 7.31 8.33 7.66 5.36 6.46 8.30
2013 5.74 7.89 6.49 7.09 5.91 6.31 8.24 6.73 8.56 8.19 6.54 6.49
2014 8.03 6.80 6.25 7.10 5.38 6.21 7.78 8.87 6.62 6.09 8.40 8.37
2015 8.00 5.73 6.32 6.71 6.32 6.75 NA NA NA NA NA NA
参考这个问题:
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 值的故障的任何想法 and/or 顺利地将我的 ts 对象转换为数据框、矩阵或 table?
谢谢。
您不需要时间序列,只需点击:
res=tapply(AVG_LOSCAT2$AVG_LOSCAT, list(year = AVG_LOSCAT2$YEAR, month = AVG_LOSCAT2$MONTH), round,2)
res
month year 1 2 3 4 5 6 7 8 9 10 11 12 2012 NA NA NA NA NA 7.51 7.31 8.33 7.66 5.36 6.46 8.30 2013 5.74 7.89 6.49 7.09 5.91 6.31 8.24 6.73 8.56 8.19 6.54 6.49 2014 8.03 6.80 6.25 7.10 5.38 6.21 7.78 8.87 6.62 6.09 8.40 8.37 2015 8.00 5.73 6.32 6.71 6.32 6.75 NA NA NA NA NA NA