Skip to main content

SAS Base


Base言語活用のポイント

マクロの世界とdataステップの世界を分けて考える シングルクォートとダブルクォートの違いをしっかり押さえる ステートメント、ステートメントに紐づくオプション、データセットに紐づくオプションを...

dataステップ内関数(文字列の情報取得)

dataステップ内関数(文字列の編集)

dataステップ内関数(その他)

グローバルステートメント

procステップ

PROCステップ - SAS® Help Center

データセットオプション

外部ファイルを読み込む

制御文字を文字リテラルで扱う

proc sql内で「欠損値かどうか」の条件を指定する

whereステートメント内でis missing演算子を使用する。反転する場合はis not missingを使用する。

dataステップ内で「欠損値かどうか」の条件を指定する

missing(列名)を使用する。反転する場合はnot missing(列名)とする。

指定の文字列をN回繰り返した文字列を用意する

dataステップ内でrepeat(繰り返したい文字, N - 1);を使用する。もしくは N * '繰り返したい文字'とする。

proc sqlでのサブクエリの使用

通常のSQLのように記述できる。

dataステップ内のset句で読み込んだデータセットに、行番号を付与する

set データセット名 CUROBS=一時変数名で新しい列に行番号を挿入できる。

データセットの列の重複を削除して取得

proc sortおよびnodupkeyを使用する。 /* carsデータセットのMake列の内容を、重複削除して取得する */ proc sort data=sashelp.cars(keep...

ログにテキストや変数の内容を出力する

dataステップ内ではput、マクロ内では%putを使用する。 データセット内の変数を出力する場合は、シングルクォートやダブルクォートで括る必要はなく、変数名をそのまま指定する。 複数の内容を...

リスト文字列などを指定の区切り文字で区切り、n番目の要素を取り出す

dataステップ内でscan(文字列, n, 区切り文字(指定しない場合はあらゆる文字列で分割する))を使用し、値を取り出す。

データセットの内容はいじらないが、dataステップ内で使用できる関数を使用したいとき

出力先データセット名に_null_を指定する。 data _null_; put 'ログ出力のテスト'; run;

リスト文字列の要素でループする

%do %whileなどを組み合わせる。 %macro LoopTest(); %let name_list = AAA BBB CCC DDD; %let index =...

proc sqlで取得したクエリ結果を、区切り文字で結合しマクロ変数に代入する

into: マクロ変数名 separated by '区切り文字'を用いる。 複数列から出力する場合でもintoは1つだけ。マクロ変数名にコロンを前置する INTO句 - SAS® He...

SASデータセットの各行の値を(任意の区切り文字)で結合し、文字列としてマクロ変数に格納する

retainやend = eofを活用する。 RETAINステートメント - SAS® Help Center data _null_; set work.input_t...

外部ファイルにテキストを出力する

filenameおよびfileステートメントを使用する。 filename ... 「SASファイル参照名」と「外部ファイルまたは出力デバイス」の関連付け・関連付けの解除を行う。 fi...

文字列「yyyymmdd_hhmmss」を得る

%local _timestamp; data _null_; call symputx("_timestamp", put(today(), yymmddn8.) || '_' || ...

よく使うシステムオプション

カテゴリ別のシステムオプション - SAS® Help Center ログを簡素化する option nosource nonotes; nosource ... ソースステートメ...

リスト文字列の要素でループする

%do %whileなどを組み合わせる。 %macro LoopTest(); %let name_list = AAA BBB CCC DDD; %let index =...

文字列の長さに合わせてブロックコメントを生成する

length()およびklength()を組み合わせ、マルチバイト文字を含めたいい感じの文字長を計算し、ブロックコメントを生成する。 実行環境によってはうまくいかないこともある。 d...

proc sqlで取得したクエリ結果を、区切り文字で結合しマクロ変数に代入する

into: マクロ変数名 separated by '区切り文字'を用いる。(複数列から出力する場合でもintoは1つだけ.マクロ変数名にコロンを前置する) INTO句 - SAS® H...

ods htmlステートメント

データセットやレポートをHTMLファイルへ出力する。 ods htmlステートメント ods html file='C:\SAS_Study\class.html'; proc m...

日時データの利用

YYMMDDx出力形式 data work.date_info; now_datetime = datetime(); now_date = datepart(now_datetime...

dataステップ内関数の使用例

data work.test; set sashelp.class; height_cm = round(height * 0.0254, 0.01); /* inchをmに変換 */ hei...

ソート済のデータセット列について、その値をもつ「最初の行」や「最後の行」だけで処理を行う

dataステップ内でbyステートメントを適用すると、byステートメントで指定した列ごとに「first.列名」および「last.列名」の列が生成される。 使用したいデータセット列は、proc ...

CASL