Как определить подмножество выбора процента населения?

Мне нужно было бы рассчитать процент населения. В частности, мне нужно 10% от начальной популяции, чтобы определить новое подмножество. Я пытался с помощью

proc sql;
select time, 
      count(*)*0.1
from table1
group by 1;
quit;

и это работает, так как у меня есть процент населения, который я хотел. Однако у меня возникают трудности с поиском пути, который позволил бы мне включить другое условие ( where var1>0 and var2=24 ), где переменные взяты из исходного набора данных (то есть, var1 и var2 взяты из таблицы1). Ты знаешь, как я мог это сделать?

Всего 1 ответ


Предположим, у вас есть 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;

Выбор SQL, основанный на случайном числе, может дать грубый аналог, но не дает точную частоту дискретизации 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;

Есть идеи?

10000