楼主: liu022
1458 3

请教一个程序效率提升的问题 [推广有奖]

  • 0关注
  • 6粉丝

已卖:181份资源

讲师

64%

还不是VIP/贵宾

-

威望
0
论坛币
879 个
通用积分
7.4013
学术水平
23 点
热心指数
18 点
信用等级
21 点
经验
3667 点
帖子
430
精华
1
在线时间
375 小时
注册时间
2007-5-21
最后登录
2025-10-22

楼主
liu022 发表于 2014-7-1 20:19:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!

         我想扩张某个数据集,例如数据集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;



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

扫码加我 拉你入群

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

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

关键词:Simulation ulation period Asset ATION 程序

沙发
yuerqieqie 发表于 2014-7-1 20:49:01
proc append应该比set statement在拼接数据的时候更有效率吧

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

板凳
liu022 发表于 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;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 07:53