割り当てステートメント(代入文)DATAステップでは、新たに変数を作成したり、数値を計算してその結果を変数に代入したりすることができる。した変数処理の基本となるのが割り当てステートメントである。上記のとおり、算術演算子の実行順序には優先順位が設定されている。カッコを利用することで、任意の優先順位に指定することも可能である。ひとつの演算式内で、同じ優先順位の演算子が重複している場合、基本的には左から右へ順番に実行されるが、累乗のみ右から左へ実行されることに注意が必要である。"」を連結しているので、長さ20バイトのname1にはseiの部分しか格納されていない。太郎"」、と意図した通りに格納されている。太郎"」、と意図した通りに格納されている。様々なタスクを実行する関数が用意されている。用途に応じた適切な関数を使用することで効率的なプログラミングが可能となる。c);run;total1:引数をカンマ「,」区切りで指定している。total2:関数によっては引数をリスト形式「of」で指定することもできる。4算術演算子とSAS関数(算術・統計関数)における数値欠損値処理の違い「+」演算子とSUM関数は基本的に同じ結果が得られるが、数値欠損値に対する処理で違いが生じる。c);run;mean1:算術演算子の場合、欠損値を含む演算の結果は欠損値となる。mean2:SAS関数の場合、引数内の欠損値を除外し、有効値のみを使って算出する。欠損値を含んだ計算により、以下の箇所で欠損値が生成されました。」のNOTEがログに出力される。変数の各種制御DATAステップ内で、ステートメントやデータセットオプションを使用することで、作成するSASデータセットにどの変数を書き込むか制御したり、変数名を変更したりすることができる。下図のようなSASデータセットに対し、KEEPステートメント、または、KEEPデータセットオプションで変数を保持した例を示す。sample_missing;run;keepステートメントは、DATAステップの最終過程(すべてのオブザべーションの処理が終わって、SASデータセットを完成させる直前)の段階で作用する。したがってDATAステップのステートメントであるが、記述位置は問わず、どの位置に記述しても結果は同じになる。これを非実行ステートメントという。mean2);run;データセットオプションは、作成済みの完成したデータセットに対して作用する。ゆえに、PROCステップでも使用することができる。上記の例だと、どちらを実行しても下図のSASデータセットが作成される。KEEPデータセットオプションで必要な変数のみ保持した方がメモリ消費を防げるので、ビッグデータを読込む際は、どちらを使用するかしっかりと考える必要がある。下図のようなSASデータセットに対し、DROPステートメント、または、DROPデータセットオプションで変数を除外した例を示す。mean1);run;上記の例だと、どちらを実行しても下図のSASデータセットが作成される。※KEEPとDROPの使い分けKEEPとDROPは、指定する変数群を逆にすれば同じ結果を得ることができる。基本的にはKEEPを使用することを推奨している。その理由は、作成するデータセットに含まれる変数が明示されることになるので、プログラムやデータ構造の見通しが良くなり、保守性が高まるからである。保持する変数が多数、言い換えると、除外する変数が少数の場合は、DROPを使用することもあるので、両者をどう使い分けるかについてはケースバイケースと言える。下図のようなSASデータセットに対し、RENAMEステートメント、または、RENAMEデータセットオプションで変数名を書き換える例を示す。mean1=mean1_miss));run;上記の例だと、どちらを実行しても下図のSASデータセットが作成される。4実行ステートメントと非実行ステートメント「01_SASプログラミングの基本」でDATAステップ内のステートメントは、記述された順番に処理されると説明した。直前で加工した変数を使って、次のステートメントでさらに別の処理を追加する場合、目的通りの流れに沿ってステートメントを記述しなければ、望んだ結果が得られないことになる。した、オブザべーションのデータを直接、編集・操作するステートメントを「実行ステートメント」と呼ぶ。実行ステートメントについては、その記述順を意識する必要があるということである。割り当てステートメントは典型的な実行ステートメントである。ここで説明したKEEP、DROP、RENAMEの各ステートメントは、位置は問わず、どこに記述しても結果は同じになる。オブザべーションのデータを直接操作するのではなく、DATAステップの最終過程で作用するだけのステートメントだからである。した、データを直接操作しないステートメントのことを「非実行ステートメント」(宣言ステートメント)と呼ぶ。これらのステートメントは、作成したデータセットの構造を明示する側面があので、プログラム・データ構造の明瞭さ・わかりやすさという観点から、DATAステップの開始近くに記述することを推奨している。関連マクロ【SAS】SASデータセットの入出力制御(永久データセット化、ソート、重複チェック、パスワード)汎用的な入出力制御用マクロを一つ作っているだけで、効率よくプログラミングすることができます。今回紹介するのは、簡単だけどいちいちコードを記述するのが面倒くさい、という悩みを解決するためのマクロです。SAS変数リストSASでは、ステートメントや関数の引数として、変数名を列挙する際に、各種略記法を使用することができる。1数字付き範囲リスト最後の文字が連続した数字で、その数字以外は同じ名前である一連の変数を指定する。X10;2名前範囲リストSASデータセット内の変数の位置をもとに、ある範囲の変数群を指定する。※SASデータセット内の変数の位置とは、変数が作成された順番と考えておけばよい。x;3名前の接頭語リスト指定した文字列で始まるすべての変数を参照する。yzなど、「x」と「y」で始まる全ての変数をKEEPする。4OFキーワードによるリスト形式SAS関数の引数に上記の変数リストを指定する場合は、OFキーワードが必要となる。y3)例1と例2は同じ結果を返すが、例3はXとYの間にカンマ「,」が入っているので、Xはリストとして扱われるが、Yは単なる引き算となる。リストとして扱われる範囲は、OFキーワードから、カンマ「,」まで、ということになる。SASのプログラミング処理によって作成されるSASデータセットは、Windows上では、ひとつのファイルとしてハードディスク上に生成されている。通常、SASを使って処理するためのデータが、最初からSASデータセットとして用意されることはない。通常、DATAステッププログラムは、入力データを読み込んで新しいSASデータセットを作成するという構造で記述される。SASステートメントはSASに処理させるための命令文で、多様な処理に対応した多数のステートメントが用意されています。