1 31414 2 25245 3 47467
1 41341 2 25245 3 77474
1 52524 2 36635 3 25243
1 25245 2 80700 3 25452
1 25243 2 74674 3 56356
你的1、3、5列其实没必要出现。就对2,4,6列取变量命x1,x2,x3就行了。
经常的股票收益率序列是你的那种状况,按股票和时间排序,需转换为列来算相关系数。
- data stk_return;
- do stock=600000 to 600004;
- stockcode=input(left(stock),$6.);
- do date='01jan2010'd to '10jan2010'd;
- return=rannor(12312);
- output;
- end;
- end;
- drop stock;
- format date yymmdd10.;
- run;
- proc sort data=stk_return;
- by date stockcode;
- run;
- proc transpose data=stk_return out=skt_by_date;
- ID stockcode;
- by date;
- run;
复制代码你的数据只需多加一个额外变量,就可以用transpose了。
- data test;
- input x y;
- cards;
- 1 31414
- 1 41341
- 1 52524
- 1 25245
- 1 25243
- 2 25245
- 2 25245
- 2 36635
- 2 80700
- 2 74674
- 3 47467
- 3 77474
- 3 25243
- 3 25452
- 3 56356
- ;
- data test_add;
- set test;
- if first.x then x_nob=1;
- else x_nob++1;
- by x;
- run;
- proc sort data=test_add;
- by x_nob;
- run;
- proc transpose data=test_add out=wanted(drop=_name_);
- ID x;
- by x_nob;
- run;
复制代码