SAS proc surveyselect不对输出进行排序

时间:2016-03-07 18:37:55

标签: sorting random sas

我正在使用PROC SURVEYSELECT语句从一组整数中获取随机数。 SAS然后按升序返回采样的整数,我需要它们保持随机顺序。我如何随机混合SURVEYSELECT语句的输出,或者只是让语句不进行排序?我似乎找不到任何让语句按照随机选择的顺序输出的选项。

以下是代码:

proc surveyselect data=data noprint
method=srs
n=numOfSamps
seed=123
out=outputSet
run;

一如既往,提前谢谢!

3 个答案:

答案 0 :(得分:1)

如果您只是想对最终的分层样本进行随机排序,可以使用EntityManager.flush()ranuni()

proc sort

答案 1 :(得分:0)

要生成x大小为n的整数的随机排列,您可以使用PROC PLAN。我不知道这与你的SRS有什么关系,但是你不知道你的整个故事吗?

proc plan;
   factors x=10 of 100 random / noprint;
   output out=x10;
   run;
   quit;

enter image description here

答案 2 :(得分:0)

如果您只有一个SRS,这是默认的SURVEYSELECT。

data have;
  call streaminit(7);
  do _order = 1 to 1e6;
    intnum = floor(rand('Uniform')*1e9);
    output;
  end;
run;


proc surveyselect data=have noprint
method=srs
n=10000
seed=123
out=outputSet;
run;

从包含的_ORDER变量可以看出,它没有以任何方式排序 - 它仍然保留了初始排序(并且该变量没有什么特别之处)。

现在,如果您正在进行分层SRS,这是通过在上面的代码中使用数据集名称暗示的(但是您将详细信息保留在其中),它将被排序,您需要包含_ORDER变量或类似的东西,然后按该变量重新排序以返回原始订单。