重组表的行和使组织列

7视图(30天)
我有一个115248 x2时间表,组织像下面的小例子,在Permno每个股票ID:
然而,我想重新组织它看起来像这样:
我怎么去呢?

接受的答案

彼得·珀金斯
彼得·珀金斯 2021年8月3日
你需要unstack:
> > = datetime日期(1963年,[1;2;3;1;2;3;1;2;3],[31;28 29、31;28 29日,31日,28日,29));
> > Permno = (10065; 10065; 10065; 10145; 10145; 10145; 10225; 10225; 10225);
> >返回=兰德(9,1);
> > tt =时间表(日期、Permno返回)
tt =
9×2的时间表
日期Permno返回
_________________________
31日- 10065年1月- 1963年0.39223
28 - 10065年2月- 1963年0.65548
29日- 3月- 1963 10065 0.17119
31日- 10145年1月- 1963年0.70605
28 - 10145年2月- 1963年0.031833
29日- 3月- 1963 10145 0.27692
31日- 10225年1月- 1963年0.046171
28 - 10225年2月- 1963年0.097132
29日- 3月- 1963 10225 0.82346
> > tt2 = unstack (tt,“返回”,“Permno”)
警告:表变量无效的MATLAB的名字标识符已被修改。因为表变量名必须是唯一的,任何表变量名
发生了为了配合新的标识符也被修改。
使用原始的INDVAR值如表变量名,设置“VariableNamingRule”“保存”。
tt2 =
3×3的时间表
日期x10065x10145x10225
____________________________________
31 - 1月- 1963 0.39223 0.70605 0.046171
2月28 - - 1963 0.65548 0.031833 0.097132
29 - 3月- 1963 0.17119 0.27692 0.82346
unstack已经把前一个“x”Permno数字让他们的名字,所以你可以轻易地获取每个变量:
> > tt2.x10065
ans =
0.39223
0.65548
0.17119
你可以给这些变量自己的名字,甚至告诉unstack不重命名它们,但在这种情况下,它将是一个多输入访问数据:
> > tt2 = unstack (tt,“返回”,“Permno”,“VariableNamingRule”,“保存”)
tt2 =
3×3的时间表
日期10065年10145年10225年
____________________________________
31 - 1月- 1963 0.39223 0.70605 0.046171
2月28 - - 1963 0.65548 0.031833 0.097132
> > tt2。(“10065”)
ans =
0.39223
0.65548
0.17119

答案(1)

本杰明·克劳斯
本杰明·克劳斯 2021年8月3日
您正在寻找的命令 unstack
例如:
newtbl = unstack (origtbl,“返回”,“Permno”)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!