DATAステップを繰り返す際に、INPUTステートメントまたは割り当てステートメントで作成される変数の値を保持します。
該当要素: | DATAステップ |
カテゴリ: | 情報 |
種類: | 宣言 |
値を保持する変数名、変数リスト、配列名を指定します。
ヒント | _ALL_、_CHAR_、_NUMERIC_を指定する場合、RETAINステートメントの前に定義した変数のみに影響します。 |
変数名がRETAINステートメントにのみ指定されている場合に、その初期値を指定しないと、この変数はデータセットに書き込まれず、変数が初期化されていないことを示す注釈がSASログに書き込まれます。初期値を設定すると、この変数はデータセットに書き込まれます。 |
直前に指定した1つまたは複数の要素に対し、初期値(数値または文字)を指定します。
ヒント | initial-valueを省略すると、初期値は欠損値になります。Initial-valueは、その前にあるリストのすべての要素に割り当てられます。このため、変数リストのすべてのメンバに同じ初期値が割り当てられます。 |
参照項目 | (initial-value)および(initial-value-list) |
直前に指定した1つの要素、または要素リストにある最初の要素に対し、初期値(数値または文字)を指定します。
直前に指定したリストにある各要素に対し、初期値(数値または文字)を指定します。このリストの最初の値を要素リストの最初の変数に、2番目の値を要素リストの2番目の変数に割り当てます。
制限事項 | initial-value-listとelement-listの両方を指定する場合、RETAINステートメントではelement-listをinitial-value-listより前にリストする必要があります。 |
ヒント | ブランクまたはカンマで複数の初期値を区切ることができます。 |
連続する整数値の範囲を指定する場合は、簡略化した表記を使用できます。増分は常に+1になります。 | |
変数と一時データ要素の両方に初期値を割り当てることができます。 | |
指定した初期値の数よりも変数の数が多い場合、初期値が割り当てられなかった変数には欠損値が割り当てられ、警告メッセージが発行されます。 |
retain month1-month5;
retain month1-month5 1 year 0 a b c 'XYZ';
XYZ
にそれぞれ設定されます。
retain month1-month5 (1);
retain _all_;
retain var1-var4 (1 2 3 4);
retain var1-var4 (1,2,3,4);
retain var1-var4(1:4);
data _null_;
array City{3} $ City1-City3;
array cp{3} Citypop1-Citypop3;
retain Year Taxyear 1999 City ' '
cp (10000,50000,100000);
file file-specification print;
put 'Values at beginning of DATA step:'
/ @3 _all_ /;
input Gain;
do i=1 to 3;
cp{i}=cp{i}+Gain;
end;
put 'Values after adding Gain to city populations:'
/ @3 _all_;
datalines;
5000
10000
;
Values at beginning of DATA step:City1= City2= City3= Citypop1=10000 Citypop2=50000 Citypop3=100000 Year=1999 Taxyear=1999 Gain=. i=._ERROR_=0 _N_=1 Values after adding GAIN to city populations:City1= City2= City3= Citypop1=15000 Citypop2=55000 Citypop3=105000 Year=1999 Taxyear=1999 Gain=5000 i=4 _ERROR_=0 _N_=1 Values at beginning of DATA step:City1= City2= City3= Citypop1=15000 Citypop2=55000 Citypop3=105000 Year=1999 Taxyear=1999 Gain=. i=._ERROR_=0 _N_=2 Values after adding GAIN to city populations:City1= City2= City3= Citypop1=25000 Citypop2=65000 Citypop3=115000 Year=1999 Taxyear=1999 Gain=10000 i=4 _ERROR_=0 _N_=2 Values at beginning of DATA step:City1= City2= City3= Citypop1=25000 Citypop2=65000 Citypop3=115000 Year=1999 Taxyear=1999 Gain=. i=._ERROR_=0 _N_=3
libname class 'SAS-library';
proc sort data=class.allscores;
by id;
run;
data class.bestscores;
drop grade;
set class.allscores;
by id;
/* Prevents HIGHEST from being reset*/
/* to missing for each iteration. */
retain highest;
/* Sets HIGHEST to missing for each */
/* different ID value. */
if first.id then highest=.;
/* Compares HIGHEST to GRADE in */
/* current iteration and resets */
/* value if GRADE is higher. */
highest=max(highest,grade);
if last.id then output;
run;