Как создать несколько наборов данных в SAS с помощью циклов

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;

Я хотел бы создать несколько наборов данных в SAS, используя приведенный выше код через цикл do. Однако я не могу изменить имя каждого набора данных с помощью индикатора &i. Может ли кто-нибудь помочь мне изменить мой код, чтобы я мог создавать несколько наборов данных? Или есть другие альтернативы тому, как создать несколько наборов данных из матрицы с помощью циклов? Заранее спасибо.


person Sopon    schedule 23.12.2016    source источник


Ответы (1)


Вы не хотите использовать макропеременные, вы хотите использовать функции 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;
person data _null_    schedule 23.12.2016
comment
Я согласен с data_null_. Возможно, вы захотите добавить переменную ID в каждый набор перестановок, а затем написать один набор данных, содержащий все данные. Затем вы можете проанализировать данные с помощью обработки по группам. - person Rick; 24.12.2016
comment
Что мне следует использовать для объединения нескольких наборов данных в один набор данных? Я думаю, это лучшая идея - person Sopon; 25.12.2016
comment
Спасибо большое! Сможете ли вы помочь мне с другим вопросом, который я разместил? - person Sopon; 28.12.2016