Предположим, у вас есть 1000 элементов (строка), из которых требуется 10% случайной выборки.
Proc SURVEYSELECT
, вероятно, является лучшим способом выбора выборок.
data have;
do id = 1 to 1000; output; end;
run;
proc surveyselect noprint data=have method=srs rate=10 out=want;
run;
A * Выбор 1013 * на основе случайного числа может дать грубый аналог, но не дает точной частоты выборки 10%.
proc sql;
create table want as
select id from have
where rand('uniform') <= 0.10 %* roughly 10% of a uniform distribution;
;
Существуют и другие способы, например шаг DATA с алгоритмом k/n
.
data want;
call streaminit(123);
do k=0.10*N by 0 while (k > 0);
set have nobs=n;
if rand('UNIFORM') <= k/n then do;
k + (-1);
output;
end;
n +(-1);
end;
stop;
run;