在SAS中创建100个数据集副本
我需要创建一个数据集的100个副本(有3个变量),但其中一个变量需要随机分配(1到1000) 我知道我可以使用100数据语句,但我不想走这条路 假设我有数据集A,并且想要创建数据集A1到A100,我使用了以下代码在SAS中创建100个数据集副本,sas,Sas,我需要创建一个数据集的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根本不生成任何东西您不能通过任何这样的
data A1--A100;
set A;
do i=1 to 1000;
var3=int(ranuni(0) * 1000 + 1);
output A1--A1000;
end;
run;
但是SAS根本不生成任何东西您不能通过任何这样的快捷方式来实现。可以使用宏语言创建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)。始终使用一个积极的种子(并保存它),这样你就可以复制你的结果。以下是答案,希望它能有所帮助
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;
我很有信心它会在你的日志中产生错误。你可能还需要查看Proc SurveySelect来帮助进行随机选择。我不确定你到底想要什么,所以不确定它是否有帮助;创建数据集“A”的R=100个副本,但让变量VAR在每个副本中随机排列。我读了这2条提示,但它没有提供代码;实现这一点的最佳方法是将原始数据的每个副本(随机重新排序VAR)堆叠在一个数据集上。通过随机生成一个变量(Ranui函数)并按该变量排序,可以对一组数字进行随机重新排序。不建议生成100个不同的数据集并将它们堆叠起来;整个最终数据集应仅使用1或2个数据步骤生成。