SASは初めてです。これで、SASデータテーブルが次のようになりました。
ID score
-------------------
01 1
02 3
03 4
04 2
この表に観測数を保存する方法はありますかPROC SORTおよびDATAステップのみを使用? SASログスクリプトの "hold N = 4"のような値をログウィンドウに保持したい。
私の専門外の説明でごめんなさい。前もって感謝します。
Setステートメントでnobs
=を使用します。
data _null_;
set xyz nobs=nobs;
put "HOLD N=" nobs ;
stop;
run;
新しい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 Dictionaryビューを使用して[〜#〜] 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の学習を進めるにつれて、それらを使用し始めることができます。