给出这样的数据步骤:
data tmp;
do i=1 to 10;
if 3<i<7 then do;
some stuff;
end;
end;
run;
我想写一下if语句为真的次数。例如,在此示例中,我希望在日志中有一行说明:
如果陈述真实3次
因为i
为4,5或6时条件为真。我该怎么做?
答案 0 :(得分: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;