use*_*814 9 r date time-series
现在我有一些月度数据,如:
1/1/90 620
2/1/90,591
3/1/90,574
4/1/90,542
5/1/90,534
6/1/90,545
#...etc
Run Code Online (Sandbox Code Playgroud)
如果我使用ts()函数,很容易将数据转换为时间序列结构,如:
Jan Feb Mar ... Nov Dec
1990 620 591 574 ... 493 464
1991 100 200 300 ...........
Run Code Online (Sandbox Code Playgroud)
是否有任何可能性将其更改为季度重复,如下所示:
1st 2nd 3rd 4th
1990-Q1 620 591 574 464
1990-Q2 100 200 300 400
1990-Q3 ...
1990-Q4 ...
1991-Q1 ...
Run Code Online (Sandbox Code Playgroud)
我试图改变
ts(mydata,start=c(1990,1),frequency=12)
Run Code Online (Sandbox Code Playgroud)
至
ts(mydata,start=c(as.yearqrt("1990-1",1)),frequency=4)
Run Code Online (Sandbox Code Playgroud)
但它似乎无法正常工作.
谁能帮助我?非常感谢你.
monthly <- ts(mydata, start = c(1990, 1), frequency = 12)
quarterly <- aggregate(monthly, nfrequency = 4)
Run Code Online (Sandbox Code Playgroud)
我不同意Hyndman对此的看法.这是罕见的,因为Hyndman通常没有错.但是,我可以告诉你他的解决方案并没有给OP他想要的东西.
test<-c(1:100)
test_ts <- ts(test, start=c(2000,1), frequency=12)
test_ts
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 13 14 15 16 17 18 19 20 21 22 23 24
2002 25 26 27 28 29 30 31 32 33 34 35 36
2003 37 38 39 40 41 42 43 44 45 46 47 48
2004 49 50 51 52 53 54 55 56 57 58 59 60
2005 61 62 63 64 65 66 67 68 69 70 71 72
2006 73 74 75 76 77 78 79 80 81 82 83 84
2007 85 86 87 88 89 90 91 92 93 94 95 96
2008 97 98 99 100
test_agg <- aggregate(test_ts, nfrequency=4)
test_agg
2000 6 15 24 33
2001 42 51 60 69
2002 78 87 96 105
2003 114 123 132 141
2004 150 159 168 177
2005 186 195 204 213
2006 222 231 240 249
2007 258 267 276 285
2008 294
Run Code Online (Sandbox Code Playgroud)
好吧,等等,第一季度不是3个月的平均值,而是总和.(1 + 2 + 3 = 6,但你希望它显示均值= 2).所以你需要修改一点点.
test_agg <- aggregate(test_ts, nfrequency=4)/3
# divisor is (old freq)/(new freq) = 12/4 = 3
Qtr1 Qtr2 Qtr3 Qtr4
2000 2 5 8 11
2001 14 17 20 23
2002 26 29 32 35
2003 38 41 44 47
2004 50 53 56 59
2005 62 65 68 71
2006 74 77 80 83
2007 86 89 92 95
2008 98
Run Code Online (Sandbox Code Playgroud)
现在显示每季度写入的月度数据的平均值.除数就是这里的伎俩.如果您有每周(freq = 52)并且想要每季度(freq = 4),则除以52/4 = 13.
| 归档时间: |
|
| 查看次数: |
23852 次 |
| 最近记录: |