2012-02-17 3 views
1

Учитывая шаг данных, как это:отчет сколько раз условие выполняется в SAS

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

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

Если заявление Истинные 3 раза

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

ответ

4

Использование 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;