如何将时间序列数据组织到数据帧的对角线上?

问题描述:

如果我有一个每月的时间序列,像这样:如何将时间序列数据组织到数据帧的对角线上?

xts <- ts(c(1:48), frequency = 12) 


    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1 1 2 3 4 5 6 7 8 9 10 11 12 
2 13 14 15 16 17 18 19 20 21 22 23 24 
3 25 26 27 28 29 30 31 32 33 34 35 36 
4 37 38 39 40 41 42 43 44 45 46 47 48 

我怎么能组织的价值观是对“对角线”只是,与零的其他地方?如下面(这种格式携带的所有值xts):

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1 1 0 0 0 0 0 0 0 0 0 0 0 
2 0 2 0 0 0 0 0 0 0 0 0 0 
3 0 0 3 0 0 0 0 0 0 0 0 0 
4 0 0 0 4 0 0 0 0 0 0 0 0 
5 0 0 0 0 5 0 0 0 0 0 0 0 
6 0 0 0 0 0 6 0 0 0 0 0 0 
7 0 0 0 0 0 0 7 0 0 0 0 0 
8 0 0 0 0 0 0 0 8 0 0 0 0 
9 0 0 0 0 0 0 0 0 9 0 0 0 
10 0 0 0 0 0 0 0 0 0 10 0 0 
11 0 0 0 0 0 0 0 0 0 0 11 0 
12 0 0 0 0 0 0 0 0 0 0 0 12 
13 13 0 0 0 0 0 0 0 0 0 0 0 
14 0 14 0 0 0 0 0 0 0 0 0 0 
15 0 0 15 0 0 0 0 0 0 0 0 0 
16 0 0 0 16 0 0 0 0 0 0 0 0 
17 0 0 0 0 17 0 0 0 0 0 0 0 
18 0 0 0 0 0 18 0 0 0 0 0 0 
19 0 0 0 0 0 0 19 0 0 0 0 0 
20 0 0 0 0 0 0 0 20 0 0 0 0 
21 0 0 0 0 0 0 0 0 21 0 0 0 
22 0 0 0 0 0 0 0 0 0 22 0 0 
23 0 0 0 0 0 0 0 0 0 0 23 0 
24 0 0 0 0 0 0 0 0 0 0 0 24 

我使用的是建模软件包,要求这种格式,而在像“矩阵”包找到一个解决办法有一点运气和'diag',它们似乎没有设置为以这种方式安排数据。

通过行绑定诊断的解决方案。

rbind(diag(1:12,12,12), diag(13:24, 12,12), diag(25:36, 12,12), diag(37:48,12,12))