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 。 我怎样才能做到这一点?
如果有一个数据的步骤是这样实现:报告多少次条件在SAS
data tmp;
do i=1 to 10;
if 3<i<7 then do;
some stuff;
end;
end;
run;
我要写入日志多少次,如果声明是真实的。例如,在这个例子,我想有说在日志中的一行:
如果陈述属实3次
因为条件为真时i
是4,5或6 。 我怎样才能做到这一点?
使用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;