Sas 将一组宏随机分配给一组新的宏

Sas 将一组宏随机分配给一组新的宏,sas,Sas,我正在修改程序的一个部分,我需要做的是在循环的每次迭代中随机将一组宏分配给一组不同的宏(无需替换)。例如,假设我有 %let groupa = a %let groupb = b %let groupc = c %let group1 = &groupa; %let group2 = &groupb; %let group3 = &groupc; 在本例中,我只是将group1、group2和group3分配给groupa、groupb和groupc,但我想要的是在循环

我正在修改程序的一个部分,我需要做的是在循环的每次迭代中随机将一组宏分配给一组不同的宏(无需替换)。例如,假设我有

%let groupa = a
%let groupb = b
%let groupc = c
%let group1 = &groupa;
%let group2 = &groupb;
%let group3 = &groupc;
在本例中,我只是将group1、group2和group3分配给groupa、groupb和groupc,但我想要的是在循环的每次迭代中,group1、group2和group3被随机分配给groupa、groupb或groupc,而不进行替换。因此,也许下一次迭代是

%let group1 = &groupc;
%let group2 = &groupa;
%let group3 = &groupb;
提前感谢您对如何做这件事的任何想法,如果我需要澄清任何事情,请告诉我。谢谢

试试这个

data rand;
do i=1 to 3;
   r =ranuni(0);
   output;
end;
run;
proc sort data=rand; by r; run;

data _null_;
set rand;
format group $6.;
group = catt("group",i);
if _n_ = 1 then
   call symput(group,"&groupa");
else if _n_ = 2 then 
   call symput(group,"&groupb");
else
   call symput(group,"&groupc");
run;
%put group1: &group1;
%put group2: &group2;
%put group3: &group3;

这将随机将A、B和C分配给groupX变量。种子值0确保您每次都能得到一个新的集。

非常感谢,这非常有帮助。很高兴提供帮助。如果它回答了您的问题,请标记它。这听起来是一个非常非常糟糕的主意,因为它听起来像是您可以在数据/过程步骤中更有效地完成的事情。我建议您多解释一下为什么要这样做,我们可以制定一个更有效的整体解决方案。