複数の変数に欠損値をセットするときに、ひとつずつセットしたり、DOループを使用したりしていますが、簡略化する方法はありますか。
SAS9以降では、CALL MISSINGルーチンを使用して、複数の変数に欠損値をセットすることができます。
CALL MISSINGルーチンの書式は、以下のとおりです。
CALL MISSING(変数名1<,変数名2, ...>);
引数には文字変数と数値変数を同時に指定できます。数値変数には欠損値、文字変数にはスペースがセットされます。
「OF 変数名1 - 変数名n」という簡略表記もできます。
使用例
DATA sample; /* サンプルデータセット作成 */
INPUT id $ var1-var3;
CARDS;
A001 10 0.1 100
A001 20 0.1 100
A002 20 0.2 200
A002 30 0.1 100
A003 40 0.3 300
A003 15 0.3 300
;
RUN;
DATA sum(DROP=var1-var3 i);
SET sample;
BY id;
RETAIN s_var1-s_var3 0;
ARRAY s_var(3);
ARRAY var_(3) var1-var3;
SET sample;
BY id;
DO i=1 TO DIM(s_var);
s_var(i) + var_(i);
END;
IF last.id THEN DO;
OUTPUT;
CALL MISSING(OF s_var1-s_var3); /* CALL MISSINGルーチン */
END;
RUN;
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。
SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。
Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。