Сообщите, сколько раз условие выполнено в SAS - PullRequest
1 голос
/ 18 февраля 2012

Учитывая шаг данных, подобный этому:

data tmp;
 do i=1 to 10;
  if 3<i<7 then do;
    some stuff;
  end;
 end;
run;

Я хочу записать в журнал, сколько раз утверждение if является истинным. Например, в этом примере я хочу иметь строку в журнале, которая говорит:

Если утверждение верно 3 раза

потому что условие истинно, когда i равно 4, 5 или 6. Как я могу это сделать?

1 Ответ

4 голосов
/ 18 февраля 2012

Используя retain для хранения переменной счетчика, довольно легко увеличить счетчик того, сколько раз было выполнено условие if.

data tmp;
 retain Counter 0;
 do i=1 to 10;
  if 3<i<7 then do;
    Counter+1;
    *some stuff;
  end;
 end;
 put 'If statement true ' Counter 'time(s).';
run;

Обратите внимание, что это записывает в журнал один раз,это последнее, что происходит перед завершением шага данных (в примере только один цикл в шаге данных).Если вы хотите сделать это для шага данных, который имеет более одного цикла (например, когда оператор set считывает данные из другого набора данных, вам нужно сообщить SAS, что вы хотите, чтобы он сообщал только в концешаг. Вы бы сделали это так:

* create an example input data set;
data exampleData;
  do i=1 to 10;
   output;
  end;
run;

* use a variable 'eof' to indicate the end of the input dataset;
data new;
 set exampleData end=eof;
 retain Counter 0;
 if 3<i<7 then do;
  Counter+1;
  *some stuff;
 end;
 if eof then put 'If statement true ' Counter 'time(s).';
run;
...