Sas 如何将观察值的数量打印到外部文件中-选择应用的位置?

Sas 如何将观察值的数量打印到外部文件中-选择应用的位置?,sas,Sas,我有一个混乱的数据集,包含大约100个变量和几千个观察值。为了检查数据集中的错误-我只对其中的一个选择感兴趣-我使用proc print语句和where selection,然后将打印输出放入*.rtf文件中供以后参考。到目前为止一切正常,MWE: data test; input a b ; cards; 2 2 3 4 ; run; ODS rtf file="test"; title "how many obs"; proc print data = test; var a; where

我有一个混乱的数据集,包含大约100个变量和几千个观察值。为了检查数据集中的错误-我只对其中的一个选择感兴趣-我使用
proc print语句
where selection
,然后将打印输出放入
*.rtf
文件中供以后参考。到目前为止一切正常,
MWE:

data test;
input a b ;
cards;
2 2
3 4
;
run;

ODS rtf file="test";
title "how many obs";
proc print data = test;
var a;
where a=2;
run;

ODS rtf close;
title;
但是,当没有错误时(即,
where selection
中没有任何内容符合条件,例如,上面的
MWE
中的
where a=4
),我想在
*.rtf
中打印类似“没有错误”的内容。现在,只生成了一个空文件


我不知道我怎样才能做到这一点。我想可能是
中的
有某种输出(至少在日志中说
0个观察值已被选中
),但我无法将此信息导入
*.rtf
。有什么想法吗

只需添加另一个步骤,当没有满足选择条件的观察结果时,该步骤将打印一些内容

ods rtf file="test";
title "how many obs";
proc print data = test;
  var a;
  where a=2;
run;
data _null_;
  file print;
  if eof then put 'No observations match criteria.';
  else stop;
  set test end=eof;
  where a=2;
run;

ODS rtf close;

太好了,真管用!只是一个简短的跟进:第一个
proc print步骤
很清楚。但是
data\u null\u步骤
是如何工作的呢?为
测试
数据创建一个临时变量
eof
,ok。但是这如何与下一行中a=2的
一起工作呢?我觉得我不太明白SAS是如何处理的。SAS在进入SET语句之前就知道是否还有更多的观察结果需要读取。某种类型的前瞻。类似于上次的情况。标志知道下一个观察是否在同一组中。。