我正在使用PROC SURVEYSELECT
语句从一组整数中获取随机数。 SAS然后按升序返回采样的整数,我需要它们保持随机顺序。我如何随机混合SURVEYSELECT
语句的输出,或者只是让语句不进行排序?我似乎找不到任何让语句按照随机选择的顺序输出的选项。
以下是代码:
proc surveyselect data=data noprint
method=srs
n=numOfSamps
seed=123
out=outputSet
run;
一如既往,提前谢谢!
答案 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;
答案 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变量或类似的东西,然后按该变量重新排序以返回原始订单。