SAS - создание переменной счетчика для выборки набора данных - PullRequest
0 голосов
/ 28 ноября 2018

Я новичок в SAS и задаюсь вопросом, как случайным образом выбрать набор данных.

Я создаю набор данных work.seg, а затем выполняю выборку из этой таблицы.Я хочу продолжить выборку до тех пор, пока сумма в столбце prem в таблице с измененной выборкой не станет больше некоторого значения.

В моей текущей версии кода я думаю, что каждый раз он сбрасывает sumprem в 0, поэтомуникогда не превышает пороговое значение, а код просто продолжает работать.

data work.seg;
    input segment $3. prem loss;
    datalines;
AAA 5000 0
AAA 3000 12584
AAA 250 245
AAA 500 678
;

data work.test;
    sumprem = 0;
    row_i=int(ranuni(777)*n)+1;
    set work.seg point=row_i nobs=n;
    sumprem=sumprem+prem_i;
    if sumprem>15000 then stop;
run;

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Поскольку вы используете опцию POINT =, нет необходимости допускать нормальную итерацию шага данных.Просто добавьте цикл и оператор вывода.Вы также можете установить верхнюю границу для максимального количества выборок.

data work.test;
  do _n_=1 to 100000 until (sumprem>15000) ;
    row_i=int(ranuni(777)*n)+1;
    set work.seg point=row_i nobs=n;
    sumprem + prem_i;
    output;
  end;
  stop;
run;
0 голосов
/ 28 ноября 2018

вам просто нужно заменить sumprem = 0, чтобы сохранить оператор, а также prem_i неопознан, вместо этого используйте переменную prem

 sumprem=0; /* Change this to next statement*/
 retain sumprem 0; 
...