全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1756 3
2010-08-01
悬赏 30 个论坛币 已解决
data final;
input _name_ $;
cards;
test
;
run;
%macro samp(n,m,t);
data temp(drop=i);
do i= 1 to &n;
a=i;
output;
end;
run;
%macro repeat;
proc surveyselect data=temp noprint out=rand method=srs sampsize=&m seed=0;
run;
proc transpose data=rand out=tran;
run;
data trantemp(drop=i);
set tran;
run;
data final(drop=_name_);
set final trantemp;
run;
%mend repeat;
%do i=1 %to &t;
%repeat;
%end;
%mend samp;
%samp(33,7,1000000);
这段代码的大概意思是,参数宏SAMP(n,m,t)从N个号码中无放回抽取M个号码,然后抽取t次,并把t次的结果放在FINAL的DATASET里;我打算运行100万次,但我连运行10000次都很吃力,请问各位大虾如何提高效率呢?

最佳答案

soporaeternus 查看完整内容

不知道是不是准确的无放回 效率4秒多一点 希望对你有帮助
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-1 20:45:32
复制代码
不知道是不是准确的无放回
效率4秒多一点
希望对你有帮助
二维码

扫码加我 拉你入群

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

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

2010-8-1 21:56:36
我的目的只需要从N个号码中无放回抽取M个号码,然后抽取t次,并把t次的结果放在FINAL的DATASET里
,目标的T为100W即可。各位大可不按我的代码的思路。
二维码

扫码加我 拉你入群

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

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

2010-8-2 07:51:15
6203479170 发表于 2010-8-1 20:45
data final;
input _name_ $;
cards;
test
;
run;
%macro samp(n,m,t);
data temp(drop=i);
do i= 1 to &n;
a=i;
output;
end;
run;
%macro repeat;
proc surveyselect data=temp noprint out=rand method=srs sampsize=&m seed=0;
run;
proc transpose data=rand out=tran;
run;
data trantemp(drop=i);
set tran;
run;
data final(drop=_name_);
set final trantemp;
run;
%mend repeat;
%do i=1 %to &t;
%repeat;
%end;
%mend samp;
%samp(33,7,1000000);
这段代码的大概意思是,参数宏SAMP(n,m,t)从N个号码中无放回抽取M个号码,然后抽取t次,并把t次的结果放在FINAL的DATASET里;我打算运行100万次,但我连运行10000次都很吃力,请问各位大虾如何提高效率呢?
First there is no need/point to use macro.
Second why you need a million samplings. It sounds way too much.

Changing reps=4 to 1000000 will do it. Good luck!



   data temp;
      do i = 1 to 33;
         output;
      end;
    run;

     proc surveyselect  data=temp out=rand method=srs sampsize=7 seed=1
         reps=4;
   
   run;

   proc print; run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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