新しい SAS ユーザーとして、必要なのはNOBSオプションだけかもしれません。ただし、コーディング スキルが向上するにつれて、適切ではない状況に陥ることがあります。SETステートメントのNOBSオプションは、すべての場合に機能するとは限りません。返される値は、インプレースで削除された可能性のある観測を含む、データ セット内の物理観測の数になります。また、特定のビュー (特に外部データベースに接続されたビュー) では機能しない場合があります。
データセットまたはビューで削除されていない観測の数を見つける「最も安全な」方法は、それらを使用PROC SQL
して実際にカウントし、結果をマクロ変数に入れることです。たとえば、HAVE という名前のデータ オブジェクトがあるとします。
proc sql noprint;
select count(*) into : nobs
from WORK.HAVE;
quit;
%put 'Obs in data set:' &nobs;
これは、HAVE がデータ セットまたはビューの場合に機能することに注意してください。
または、オブジェクトが単なるデータセットである場合は、SAS TABLES ディクショナリ ビューを使用して、NLOBS属性を返すことができます。この属性には、"論理" オブザベーションの数が含まれます (つまり、削除された行が含まれます)。
proc sql noprint;
select nlobs into : nobs
from dictionary.tables
where libname='WORK'
and memname='HAVE';
quit;
%put 'Obs in data set:' &nobs;
SAS データセットが非常に大きい場合、これは確かにより効率的です。なぜ SAS がこのNLOBS値をSETステートメントのオプションとして使用可能にしないのか、私はしばしば疑問に思いましたが、理由があることは確かです。
PROC SQL、ビュー、マクロ変数、およびインプレース削除されたオブザベーションは、今はすべて新しいものかもしれませんが、SAS の学習が進むにつれて、それらを使い始めることになります。