SAS - Как выбрать случайные выборки на основе условия - PullRequest
1 голос
/ 11 июля 2019

У меня есть набор данных SAS, который содержит столбец чисел в диапазоне от -2000 до 4000. Я хочу выбрать 37 случайных выборок на основе следующих условий.Если число от -2000 до -1000, случайным образом выбрать 10 выборок из этого диапазона, если число от -1000 до 0, случайным образом выбрать 15 выборок из этого диапазона, если число от 0 до 1000, случайным образом выбрать 12 выборок из этого диапазона,

Я пробовал следующее:

proc surveyselect data=save.table
   method=srs n=37 out=save.table_sample seed=1953;
run;

Но это дало бы мне случайные 37 выборок из всей популяции.Я хочу выбрать случайным образом в соответствии с диапазоном данных.

Пожалуйста, помогите с кодом SAS, большое спасибо заранее!

Ответы [ 2 ]

2 голосов
/ 12 июля 2019
  1. Создайте переменную группировки в вашем наборе данных, которую вы можете использовать для группировки анализа.

    data output;
    set save.table;
    if number < -1000 then group=1;
    else if number < 0 then group=2;
    else if number < 1000 then group=3;
    run;
    
  2. Используйте PROC SURVEYSELECT с набором данных, имеющим ту же переменную, как GROUP, а также с размером выборки, или укажите размер выборки в PROC SURVEYSELECT.

    proc surveyselect data=output
    method=srs n=37 out=save.table_sample seed=1953 sampsize=(37 15 12);
    strata group;
    run;
    

Не удалось выполнить тестирование, поскольку не было предоставлено образцов данных, поэтому приведен пример использования SASHELP.HEART

proc sort data=sashelp.heart out=heart; by chol_status; run;


proc surveyselect data=heart (where=(not missing(chol_status))) method=srs sampsize=(5 10 15) out=want;
strata chol_status;
run;
1 голос
/ 11 июля 2019

Если вы хотите продолжать использовать proc surveyselect, то простой способ сделать это:

data set1 set2 set3;
  set save.table;
  if number < -1000 then output set1;
  else if number < 0 then output set2;
  else if number < 1000 then output set3;
run;

Затем трижды вызовите proc surveyselect с различными значениями n для этих 3 наборов данных.

...