SAS Base
Base言語活用のポイント
マクロの世界とdataステップの世界を分けて考える シングルクォートとダブルクォートの違いをしっかり押さえる ステートメント、ステートメントに紐づくオプション、データセットに紐づくオプションを...
dataステップ内関数(文字列の情報取得)
dataステップ内関数(文字列の編集)
cat関数
文字列を結合する。cat(X, Y, ...)
cats関数
文字列の先頭・末尾のスペースを取り除き、結合する。cats(X, Y, ...)
catx関数
文字列の先頭・末尾のスペースを取り除き、指定した区切り文字で結合する。catx('区切り文字', X, Y, ...)
tranwrd関数
文字列X内の'ABC'を'XYZ'に置換する。tranwrd(X, 'ABC', 'XYZ') tranwrd(変換したい文字列, 検索文字列, 置換する文字列) TRANWRD関数 ...
compress関数
文字列Xから、指定した文字Aをすべて取り除く。除去対象の文字列を指定しない場合は、スペースをすべて取り除く。compress(X, 'A')
trim関数
文字列の末尾のスペースを取り除く。trim(X)
strip関数
文字列の先頭および末尾のスペースを取り除く。strip(X)
dataステップ内関数(その他)
グローバルステートメント
procステップ
PROCステップ - SAS® Help Center
proc sortステートメント
データセットのソートを行う。 proc sortステートメント - SAS® Help Center サンプル proc sort data=sashelp.cars out=wo...
proc transposeステートメント
データセットを転置する。 proc transposeステートメント - SAS® Help Center サンプル proc sort data=sashelp.cars out...
proc importステートメント
外部ファイルを読み込む。 proc importステートメント - SAS® Help Center サンプル proc import datafile='C:\SAS_Study...
proc exportステートメント
データセットを外部ファイルへ出力する。 proc exportステートメント - SAS® Help Center サンプル proc export data=sashelp.cl...
proc univariateステートメント
各種統計量を算出し、レポートを出力する。 univariateプロシジャ - SAS® Help Center proc univariate data=sashelp.class...
データセットオプション
データセットオプションの概要
dataステップのsetステートメントなどで、データセット名の直後にデータセット名(~~~)のように記述し、利用する。 複数のオプションを指定する場合はスペースで区切る。 カテゴリ別のデー...
keep=データセットオブション
保持したい列名をスペース区切りで記載する。ここに記載されていない列はそもそも読み込まれないため、dataステップなどで使用不可となる。
drop=データセットオプション
除去したい列名をスペース区切りで記載する。ここに記載した列はそもそも読み込まれないため、dataステップなどで使用不可となる。
where=データセットオプション
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ledsoptsref/p0ny9o8t8hc5zen1qn3ft9dhtsxx.htm...
rename=データセットオブション
データセットの列名を異なる列名で読み込む。rename=(name1=new_name1 name2=new_name2)のようにセットで指定する。(keep=やdrop=の後にrename=が...
外部ファイルを読み込む
Excelファイルを読み込み、データセット化するマクロ
proc importを使用する。 %macro ImportExcel(i_file_path=, i_sheet_name=, ods_output_name=); proc ...
外部CSVファイルをproc importプロシジャで読み込み、データセット化する
proc import datafile='C:\SAS_Study\test.csv' out=work.work.test dbms=csv replace; getnames = ...
外部CSVファイルをdataステップで読み込み、データセット化する
filename sample "C:\SAS_Study\test2.csv"; data work.test; infile sample dim="," firstobs=2; ...
外部ファイルの読み込み(proc import)
proc importステートメント - SAS® Help Center サンプル proc import datafile='C:\SAS_Study\test.csv' out=w...
infileステートメント
データセットとして読み込む外部ファイルの情報を指定する。 infileステートメント - SAS® Help Center filename test_data "C:\SAS_S...
制御文字を文字リテラルで扱う
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 ...