任意変数が欠損値のとき、
前のオブザベーションの欠損値ではない値のセット方法
[OS] ALL
[リリース] ALL
[キーワード] DATA, MISSING, RETAIN
[質問]
任意の変数が欠損値のとき、欠損値の代わりに前のオブザベーションの値(非欠損値)をセットする方法はありますか。
NO VALUE
1001 100
. 50
1002 50
. 100
. 150
1003 50
. 200
1004 50
|
⇒
|
NO VALUE
1001 100
1001 50
1002 50
1002 100
1002 150
1003 50
1003 200
1004 50
|
[回答]
RETAINステートメントを使用します。次のプログラム例を参考にしてください。例では、任意の変数が欠損値ではないとき、その値を別の変数に保存します。欠損値が現れた場合は、保存しておいた値を欠損値の代わりにセットします。
例)
/* サンプルデータセット */
DATA sample;
INPUT NO VALUE;
CARDS;
1001 100
. 50
1002 50
. 100
. 150
1003 50
. 200
1004 50
;
RUN;
DATA sample(drop=sc_no);
RETAIN SV_NO; /* 値を保持 */
SET SAMPLE;
IF NO = . THEN /* 欠損値のとき */
NO = SV_NO;
ELSE
SV_NO = NO;
RUN;
/* 値の確認 */
PROC PRINT DATA=SAMPLE;
RUN;
|