全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1439 3
2014-07-01
大家好!

         我想扩张某个数据集,例如数据集A如下:
      Asset_No   Period
         Asset1     0
         Asset1     1
       。。。
         Asset1      10
       。。。
         Asset33     0
         Asset33     1
       。。。
         Asset33      10

        因为模拟了10000次,我希望将数据集扩张为B:
       Nsim    Asset_No   Period
          1         Asset1      0
          1          Asset1     1
       。。。
          1         Asset1      10
       。。。
           1        Asset33     0
           1        Asset33     1
       。。。
           1        Asset33      10


        .......

          10000   Asset1      0
          10000   Asset1     1
       。。。
          10000   Asset1      10
       。。。
           10000  Asset33     0
           10000  Asset33     1
       。。。
           10000   Asset33      10



我写的程序如下:
%macro ht;
%do i=0 %to 9999;
data a;
set ht1;
Simulation_Nber=&i.;
run;

%if &i.=0 %then
%do;
data b;
set a;
run;
%end;
%else;
%do;
data b;
set b a;
run;
%end;

%end;
%mend;
%ht;



显然上述代码是没有效率的,请问大家有没有更好的办法?
二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-1 20:49:01
proc append应该比set statement在拼接数据的时候更有效率吧
二维码

扫码加我 拉你入群

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

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

2014-7-1 21:02:32
yuerqieqie 发表于 2014-7-1 20:49
proc append应该比set statement在拼接数据的时候更有效率吧
关键不在这里,如果避开那个循环才是改进的关键
二维码

扫码加我 拉你入群

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

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

2014-7-1 21:10:38
yuerqieqie 发表于 2014-7-1 20:49
proc append应该比set statement在拼接数据的时候更有效率吧
已经解决了,采用proc sql的笛卡尔积就能做到

代码也很简单:

data ht1;set Prncpleaccnt;keep name Period n;run;
data ht2;do Simulation_Nber=0 to 9999;output;end;run;

proc sql;
create table hash as
select * from ht1,ht2;
quit;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群