我需要创建100个数据集副本(有3个变量),但其中一个变量需要随机分配(1到1000)
我知道我可以使用100条数据声明,但我不想走这条路!
假设我有数据集A并且想要创建数据集A1到A100,我使用了以下代码;
data A1--A100;
set A;
do i=1 to 1000;
var3=int(ranuni(0) * 1000 + 1);
output A1--A1000;
end;
run;
但SAS根本不生成任何内容
答案 0 :(得分:1)
你不能通过任何类似的快捷方式来做到这一点。您可以使用宏语言创建1000个数据集名称和1000个输出语句。
然而,你很可能不应该这样做。相反,有一个带有BY变量的数据集,然后在你要做的任何事情(MCMC或其他)中使用BY变量和BY语句。
data want;
set have;
do byvar=1 to 1000;
var3 = int(ranuni(7)*1000+1);
output;
end;
run;
另外,不要使用ranuni(0)。始终使用正面种子(并保存),以便您可以复制结果。
答案 1 :(得分:0)
这是答案,希望它可以提供帮助;
data want;
set have;
do dset=1 to 101;
rand=ranuni(4011120);
if dset=1 then real=1; else real=0;
output;
end;
run;
proc sort data=want;
by dset rand;
run;
data want2;
set permut;
if real=0 then rank= mod(_N_,366);
if real then realrank=rank;
run;
proc sort data=want2;
by dset dayofyear;
run;