我有一个 csv 数据文件https://github.com/user59036/first/blob/master/dataFraserRiver.csv
我想使用函数窗口创建两个数据集。
第一组数据为1990年1月至2008年12月,第二组数据为2009年1月至2010年12月。
datRiver <- read.csv("dataFraserRiver.csv")
datRiverTest <-ts(datRiver)
window(datRiver,start=c(1990,1),end = c(2008,12),frequency=12)
我一直收到错误:
'frequency' not changed'end' value not changedError in
window.default(x, ...) : 'start' cannot be after 'end'
我应该如何更改我的代码以获取数据?谢谢你的帮助。
如果您删除年份列,它可以工作。并将 data.frame 转换为转置矩阵。最后转换为vector
.
datvec <- c(t(datRiver[-1]))
dat_ts <- ts(datvec, start = c(1912, 1), end = c(2010, 12), frequency = 12)
window(dat_ts, start = c(1990, 1), end = c(2008, 12))
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1990 1210 841 926 3000 5050 8760 6270 3340 1790 1520 2110 1190
# 1991 867 1560 1060 2690 5810 6910 6270 4330 2730 1560 1370 1110
# 1992 1090 1180 1770 2950 4800 5940 3870 2550 1960 2190 1740 853
# 1993 662 668 751 1940 5620 4930 3640 2900 1760 1060 1050 828
# 1994 819 709 1160 3600 5970 5960 5200 2900 1580 1350 857 814
# 1995 654 837 765 1900 4450 5880 4030 3500 1870 1730 2080 1560
# 1996 1120 947 1120 3080 4070 6750 6400 3780 2610 2130 1860 1210
# 1997 1040 938 1080 2580 7420 9580 7310 4440 2490 3270 2510 1320
为什么要删除第一列?因为函数怎么知道那些年不是实际值?为什么要转换为矩阵?因为数据帧的列表格式在用作时间序列时会出现问题。为什么要转置?因为当一个矩阵变成一个向量时,它是按列排序的,但数据是按行组织的。为什么要转换为向量?因为这种格式为创建时间序列对象提供了最清晰的输入ts
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句