楼主: Garffe
2157 9

[问答] 关于数据集按观测拆分问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

20%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
868 点
帖子
26
精华
0
在线时间
41 小时
注册时间
2015-5-7
最后登录
2015-11-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求教各位大神,现在我有一个数据集a中存放的是上证A股部分股票某个月份每天的收益率,格式如下:
Stkcd(股票代码)     Trddt(年月日)      Ri(收益率)
        ······                    ··········                 ········
其中不知道具体有哪些股票,每只股票在该月份的交易日数不一定相等。现在想按Stkcd来拆分该数据集,最好拆分成以股票代码命名的数据集,求助啊~~~

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据集 stkcd 股票代码 上证A股 收益率 上证A股 股票代码 年月日 收益率 交易日

回帖推荐

沙发
lanzezhuang 发表于 2015-5-19 09:55:42 |只看作者 |坛友微信交流群
麻烦给出部分数据,数据可以是自己编的的用来做程序调试;

使用道具

藤椅
lanzezhuang 发表于 2015-5-19 15:48:53 |只看作者 |坛友微信交流群
  1. /*测试数据集*/
  2. data testt;
  3. input stkcd $ time yymmdd10. ri;
  4. datalines;
  5. 1364654 2015-04-02 0.02
  6. 1364652 2015-04-02 0.02
  7. 1364654 2015-04-02 0.02
  8. 1364653 2015-04-02 0.02
  9. 1364654 2015-04-02 0.02
  10. 1364652 2015-04-02 0.02
  11. 1364654 2015-04-02 0.02
  12. ;
  13. run;
  14. /*将股票代码汇总*/
  15. proc sql;
  16. create table one as select distinct stkcd
  17. from test;
  18. /*group by stkcd;*/
  19. quit;
  20. /*共有多少个股票代码,设置宏*/
  21. data _null_ ;
  22. set one end=final;
  23. call symput(compress('ST'||left(_n_)),stkcd);
  24. if final then call symput('N',_n_);
  25. run;
  26. /*检验一下宏*/
  27. %let d=2;
  28. %put &&st&d.;

  29. /*设置一个宏语句进行数据集分组*/
  30. %macro ttt();
  31. data test1 test2 test3;
  32. %local d;
  33. set testt;
  34. %do i=1 %to &n.;
  35. %let d=&i;
  36. if (stkcd1=&&st&d.) then output test&d.;
  37. %put &&st&d.;
  38. %end;
  39. run;
  40. %mend;
  41. /*调用宏语句*/
  42. %ttt();
复制代码

已有 1 人评分论坛币 收起 理由
admin_kefu + 40 热心帮助其他会员

总评分: 论坛币 + 40   查看全部评分

使用道具

板凳
lanzezhuang 发表于 2015-5-19 19:42:29 |只看作者 |坛友微信交流群
data test;
input stkcd $ time:yymmdd10. ri;
format  time yymmdd10.;
datalines;
a1364654 2015-04-02 0.02
a1364652 2015-04-02 0.02
a1364654 2015-04-02 0.02
a1364653 2015-04-02 0.02
a1364654 2015-04-02 0.02
a1364652 2015-04-02 0.02
a1364654 2015-04-02 0.02
;
run;
/*将股票代码汇总*/
proc sql;
create table one as select distinct stkcd
from test;
/*group by stkcd;*/
quit;
/*共有多少个股票代码,设置宏*/
data _null_ ;
set one end=final;
call symput(compress('ST'||left(_n_)),stkcd);
if final then call symput('N',_n_);
run;
%macro ttt();
%do i=1 %to &N.;
        data &&ST&i.;       
                set test;
    if stkcd="&&ST&i." then output &&ST&i.;
        run;
%end;
%mend;
/*调用宏语句*/
%ttt();


将代码调优后应该能满足你那个需求。

使用道具

报纸
Garffe 发表于 2015-5-21 09:30:40 |只看作者 |坛友微信交流群
lanzezhuang 发表于 2015-5-19 15:48
谢谢你!!!看上去应该可以用,我先去试试~~~好感动啊,好人会有好报的

使用道具

地板
lanzezhuang 发表于 2015-5-21 13:58:44 |只看作者 |坛友微信交流群
Garffe 发表于 2015-5-21 09:30
谢谢你!!!看上去应该可以用,我先去试试~~~好感动啊,好人会有好报的
不客气,工作之余,回答一下啦!

使用道具

7
haosongs 发表于 2018-8-10 15:52:26 |只看作者 |坛友微信交流群
试了不行?

使用道具

8
haosongs 发表于 2018-8-10 16:59:54 |只看作者 |坛友微信交流群
lanzezhuang 发表于 2015-5-19 19:42
data test;
input stkcd $ time:yymmdd10. ri;
format  time yymmdd10.;
%do i=1 %to &N.;
        data &&ST&i.;        
                set test;
    if stkcd="&&ST&i." then output &&ST&i.;
        run;
%end;
%mend;

使用道具

9
haosongs 发表于 2018-8-10 16:59:54 |只看作者 |坛友微信交流群
lanzezhuang 发表于 2015-5-19 19:42
data test;
input stkcd $ time:yymmdd10. ri;
format  time yymmdd10.;
%do i=1 %to &N.;
        data &&ST&i.;        
                set test;
    if stkcd="&&ST&i." then output &&ST&i.;
        run;
%end;
%mend;

使用道具

10
haosongs 发表于 2018-8-10 17:00:26 |只看作者 |坛友微信交流群
lanzezhuang 发表于 2015-5-19 19:42
data test;
input stkcd $ time:yymmdd10. ri;
format  time yymmdd10.;
最后部分的连续&&删掉

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 04:29