簡體   English   中英

如何使用循環在SAS中創建多個數據集

[英]How to create multiple datasets in SAS using loops

proc iml;
use rdata3;
read all var _all_ into pp;
close rdata3;
do i = 1 to 1050;
    perms = allperm(pp[i, ]);
    create pp&i from perms[colname= {"Best" "NA1" "NA2" "Worst"}];
    append from perms;
    close pp&i;
end;

我想通過do循環使用上述代碼在SAS中創建多個數據集。 但是,我似乎無法使用&i指示器更改每個數據集的名稱。 誰能幫助我更改代碼以允許我創建多個數據集? 還是還有其他選擇如何從矩陣到循環創建多個數據集? 提前致謝。

您不想使用宏變量,而想要使用IML的功能。 但是,您將創建大量的數據集。

data rdata3;
   x = 1;
   y = 2;
   a = 4;
   b = 5;
   output;
   output;
   run;
proc iml;
   use rdata3;
   read all var _all_ into pp;
   close rdata3;
   do i = 1 to nrow(pp);
      outname = cats('pp',putn(i,'z5.'));
      perms = allperm(pp[i, ]);
      create (outname) from perms[colname= {"Best" "NA1" "NA2" "Worst"}];
      append from perms;
      close (outname);
      end;
   quit;

您可以將ID變量添加到PERMS,並將PERMS的所有版本附加到一個數據集中。 我不確定我是否使用了最佳的IML技術,但我知道足夠多的IML才是危險的。

proc iml;
   use rdata3;
   read all var _all_ into pp;
   close rdata3;
   perms = j(1,5,0);
   create PP_out from perms[colname= {'ID' "Best" "NA1" "NA2" "Worst"}];
   do i = 1 to nrow(pp);
      perms = allperm(pp[i, ]);
      perms = j(nrow(perms),1,i)||perms;
      append from perms;
      end;
   close PP_out;
   quit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM