在SAS中创建100个数据集副本

时间:2014-10-14 00:33:12

标签: 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根本不生成任何内容

2 个答案:

答案 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;