COMPUTEステートメントについて解説していきます。
重要な注意事項を含むので、ひと通り記事全体をご覧ください。
計算項目「FLAG」を作り、「HEIGHT > 65」or「WEIGHT > 100」の場合に「1」を格納しています。
構文解説
まずは作成する項目をCOLUMNステートメントに指定
column NAME HEIGHT WEIGHT FLAG; |
計算項目であることをDEFINEステートメントに定義しておきます
(「COMPUTED」と指定)
計算内容を「COMPUTE」~「ENDCOMP」内に記述します。
IF文や関数なども使えます。
define FLAG / computed; |
計算内容を「COMPUTE」~「ENDCOMP」内に記述します。
IF文や関数なども使えます。
compute FLAG; if HEIGHT > 65 or WEIGHT > 100 then FLAG = 1; endcomp; |
重要なのが「COLUMNステートメント」での「計算項目」の指定場所
「計算項目」は、計算時に参照しているどの項目よりも後に指定するのが安全
今回の例で説明すると、
「FLG」の計算には、「HEIGHT」「WEIGHT」を参照しています。
なので、COLUMNステートメントでは「HEIGHT」「WEIGHT」の後に「FLAG」を指定しています。
(SASが内部で処理する順番が関係していそうですが、内部の話なので、明確な理由が説明できません。。)
文字項目を追加する例
「NAME」と「SEX」を横棒でつないでくっつけた計算項目「NEWVAR」を作っています。
compute FLAG; if HEIGHT > 65 or WEIGHT > 100 then FLAG = 1; endcomp; |
なので、COLUMNステートメントでは「HEIGHT」「WEIGHT」の後に「FLAG」を指定しています。
column NAME HEIGHT WEIGHT FLAG; |
(SASが内部で処理する順番が関係していそうですが、内部の話なので、明確な理由が説明できません。。)
「NAME」と「SEX」を横棒でつないでくっつけた計算項目「NEWVAR」を作っています。
計算項目が文字の場合は、COMPUTEステートメントで以下のようにLENGTHを定義しておきます。
最後に超重要で、ありがちな落とし穴もあるので、ちょっと前提知識必要になるけど、是非ご覧ください。
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど②
REPORTプロシジャ入門記事一覧
1.基本構文【COLUMN, DEFINE】
2.ヘッダーの設定
3.並べ替え・グループ化【ORDER, GROUP】
4.集計【ANALYSIS】
5.転置集計【ACROSS】
6.要約行の追加【BREAK, RBREAK】
7.計算項目の追加【COMPUTE】
8.書式の設定【STYLE=】
9.特定セルの書式設定【CALL DEFINE】
10.数値変数の落とし穴
COMPUTE 計算項目名 / CHARACTER LENGTH = 長さ ; |
最後に超重要で、ありがちな落とし穴もあるので、ちょっと前提知識必要になるけど、是非ご覧ください。
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど②
1.基本構文【COLUMN, DEFINE】
2.ヘッダーの設定
3.並べ替え・グループ化【ORDER, GROUP】
4.集計【ANALYSIS】
5.転置集計【ACROSS】
6.要約行の追加【BREAK, RBREAK】
7.計算項目の追加【COMPUTE】
8.書式の設定【STYLE=】
9.特定セルの書式設定【CALL DEFINE】
10.数値変数の落とし穴
0 件のコメント:
コメントを投稿