2016-12-23 4 views
0
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インジケータを使用して各データセットの名前を変更するようには思えません。誰も私が複数のデータセットを作成できるように自分のコードを変更するのを助けることができますか?または、マトリックススルーループから複数のデータセットを作成する方法に関する他の選択肢がありますか?前もって感謝します。ループで複数のデータセットを作成する方法

答えて

2

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; 

PERMSにID変数を追加し、PERMSのすべてのバージョンを1つのデータセットに追加できます。私は最高の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; 
+1

私はdata_null_に同意します。順列の各セットにID変数を追加し、すべてのデータを含む単一のデータセットを書き込むことができます。その後、BYグループ処理でデータを分析することができます。 – Rick

+0

複数のデータセットを1つのデータセットにまとめて結合するにはどうすればよいですか?私はこれが良いアイデアだと思う。 – Sopon

+0

ありがとう!投稿した他の質問で私を助けることができますか? – Sopon

関連する問題