SAS Learning · Exam Prep
試験範囲を「読む」だけで終わらせず、DATA ステップ、PROC、ログ確認、レポート出力を実際に書ける状態へ持っていくための学習ページ。
SAS 学習 · Base Programming Specialist · A00-231
Overview
SAS 9.4 Base Programming は、データを読み、加工し、エラーを直し、基本レポートを出す力を測る試験です。
SAS 公式の資格ページでは、この認定で示すスキルとして「データファイルの読み書き」「Base SAS プロシジャによる詳細・要約レポート」「データの操作と変換」「構文エラーとロジックエラーの特定・修正」が挙げられています。試験 ID は A00-231、試験時間は 135 分、問題数は 40-45 問、合格スコアは 725 / 1000、対象は SAS 9.4 M5 です。
比重が最も大きいのはデータ管理です。まず DATA ステップでの変数作成、条件分岐、関数、BY グループ処理、DO ループを固め、その後に入出力とレポートへ広げるのが効率的です。
参照: ローカル PDFarticles/sas/docs/specialist-base-programming.pdf / SAS 公式 Exam Content Guide
Domain Map
LIBNAME と PROC CONTENTS でライブラリとデータセット構造を調べる。SET、PROC IMPORT、XLSX エンジンで SAS / CSV / Excel データを読み込む。WHERE、DROP / KEEP を扱う。PROC SORT、NODUPKEY、OUT= で観測値の並べ替えと重複削除を行う。IF-THEN/ELSE、DO/END、代入文、日付定数、LENGTH、LABEL、FORMAT を使う。BY、first.、last.、RETAIN、SUM ステートメントで小計・合計を累積する。INPUT / PUT、変数リスト、DO ループ、PROC TRANSPOSE、マクロ変数を使う。PUTLOG で変数値、フォーマット済み値、全変数値をログに出す。PUTLOG で特定ケースだけを追跡する。PROC PRINT の VAR、SUM、WHERE、ID、BY、LABEL、SPLIT= を使う。PROC FREQ、PROC MEANS、PROC UNIVARIATE で度数、要約統計、欠損・外れ値を確認する。PROC FORMAT、LABEL、SPLIT=、タイトル、フットノートで出力を読みやすくする。ODS HTML/PDF/RTF、Excel で表示できる ODS 出力、PROC EXPORT、XLSX エンジンで結果を書き出す。Core Syntax
試験対策では、説明を読んで分かった気になるより、短いコードを何度も書くほうが強いです。以下は最小単位の型です。
libname cert "/path";
proc contents data=cert.sales; run;
proc import datafile="file.csv" out=work.raw dbms=csv replace;
guessingrows=max; run;
data work.q1;
set cert.sales(keep=id date amount);
where amount > 0;
run;
proc sort data=work.q1 out=work.q1_sorted nodupkey;
by id date; run;
if first.id then total=0;
total + amount;
if last.id then output;
num = input(char_amount, comma12.);
char_date = put(sale_date, yymmdd10.);
proc means data=work.q1 n mean sum maxdec=1;
class region; var amount; run;
ods pdf file="report.pdf" style=journal;
proc print data=work.q1 label; run;
ods pdf close;
Practice
Performance-Based では、コードを組み立て、ログを読み、出力を確認する流れが重要です。
入力ファイル形式、ライブラリ、必要列、抽出条件、グループ単位、出力データセット名を先にメモします。ここで WHERE と IF、KEEP= と KEEP の使い分けも決めます。
PROC CONTENTS / PROC PRINT(obs=) で見るいきなり完成形を書かず、読み込み直後の列名、型、長さ、日付表示を確認します。特に Excel / CSV は推測された型で崩れやすいので、GUESSINGROWS と informat を意識します。
赤い ERROR だけでなく、型の自動変換、未初期化変数、欠損値の生成といった WARNING / NOTE も点を落とす原因になります。BY 変数の未ソートはログで明確に確認します。
PROC FREQ、PROC MEANS、PROC PRINT を検算用に使います。試験では見た目のレポートより、指定どおりのデータセットや値になっているかが大事です。
libname で入力データの保存場所に参照名を付ける。PROC CONTENTS と PROC PRINT(obs=) で、加工前に型・長さ・先頭行を確認する。PROC SORT と BY は、グループ累計やマージの前提を作る。first. / last. と SUM ステートメントで、顧客ごとの合計を 1 行にまとめる。PROC MEANS は、最終データセットの件数・平均・合計が妥当かを検算する。/* 練習用テンプレート: 読む → 加工 → 検算 */
libname cert "/home/u/cert";
proc contents data=cert.orders; run;
proc print data=cert.orders(obs=10); run;
proc sort data=cert.orders out=work.orders_sorted;
by customer_id order_date;
run;
data work.customer_total;
set work.orders_sorted;
by customer_id;
if first.customer_id then total_amount=0;
total_amount + amount;
if last.customer_id then output;
keep customer_id total_amount;
run;
proc means data=work.customer_total n mean sum maxdec=2;
var total_amount;
run;
Decision Points
Performance-Based の問題は、知識を単独で聞くより「どの構文を選ぶか」を問います。次の判断を反射的にできると、コードを書く時間が短くなります。
WHERE か IF か入力データに元からある変数で行を絞るなら WHERE。DATA ステップ内で作った変数や複雑な処理結果で絞るなら IF。
KEEP= か KEEP か読み込み前に列を減らすなら入力データセットオプションの KEEP=。最終出力の列を指定するなら KEEP ステートメント。
SET か MERGE か同じ構造のデータを縦に積むなら SET 複数指定。キーで横に列を足すなら MERGE ... BY と事前ソート。
FORMAT か INPUT / PUT か表示だけ変えるなら FORMAT。文字と数値の型を変換するなら、文字から数値は INPUT、数値から文字は PUT。
CLASS か BY かPROC の中で分類して要約したいなら CLASS。グループごとに処理を分けたい、または DATA ステップで first./last. を使うなら BY とソート。
ERROR は先頭から直す。WARNING と重要な NOTE は結果が怪しいサインとして、件数・欠損・合計で検算する。
Item-Based Learning
時間割ではなく、試験ガイドの項目をそのまま学習単位にします。各項目で「覚える構文」「できる状態」「確認問題」をセットにしてください。
20-25% · Access and Create Data Structures
DATA ステップで、既存データセットを読み込み、新しい SAS データセットを作れる状態にします。work は一時、ライブラリ参照名つきは永久です。
data work.sample; set cert.source; run; を書く。LIBNAME で保存場所に名前を付け、PROC CONTENTS で変数名、型、長さ、format、informat、ラベルを確認します。
PROC IMPORT の OUT=、DBMS=、REPLACE、GUESSINGROWS を使い、区切り文字付きファイルと Excel ファイルを読みます。
PROC CONTENTS で型を検査する。縦に足す連結、横に並べる 1 対 1 マージ、キーを使う 1 対多マージを区別します。マージ前の PROC SORT を忘れないことが重要です。
SET 複数指定と MERGE ... BY の違いを説明できる。SAS 日付値は基準日からの日数として保存されます。表示は format、読み込みは informat で制御します。行は WHERE / IF、列は DROP / KEEP で制御します。
INPUT で SAS 日付値にし、FORMAT で表示を整える。WHERE と IF、KEEP= と KEEP の実行タイミングを説明できる。35-40% · Manage Data
PROC SORT の BY、OUT=、重複削除オプションを使います。後続の BY 処理とマージの土台です。
IF-THEN/ELSE と DO/END で条件付き処理を作ります。条件が複数あるときは、上から順に評価されることを意識します。
else を入れないと、後続条件が再評価されるケースを説明できる。新規変数、既存変数、式、日付定数を代入します。文字変数は LENGTH の位置が重要です。LABEL と FORMAT は表示と説明を整えます。
RENAME=、表示名は LABEL であると区別できる。BY、first.、last.、RETAIN、SUM ステートメントを使い、グループごとの累計を作ります。
文字関数、数値関数、日付関数を使います。型変換は自動変換に頼らず、文字から数値は INPUT、数値から文字は PUT で明示します。
SCAN、SUBSTR、UPCASE、SUM、ROUND、INTCK、INTNX を短問で使う。反復 DO、条件付き DO、ネスト DO を使い、繰り返し処理を短く書きます。PROC TRANSPOSE は縦持ち・横持ちの変換に使います。
VAR、ID、BY、OUT=、PREFIX=、NAME= の役割を言える。%LET で値を一箇所に置き、プログラム保守を簡単にします。マクロ変数名の直後に文字を続けるときはドット区切りを使います。
&year. のドットが必要な場面を説明できる。15-20% · Error Handling
コードは動いているのに結果が違う場合は、行数、欠損、型、条件、ソート、グループ境界を疑います。PUTLOG で途中の値を見ます。
PUTLOG で、特定 ID だけ計算途中の値を出す。_N_ と _ERROR_ の意味を説明できる。SAS ステートメントはキーワードから始まり、セミコロンで終わります。引用符不一致、スペルミス、無効オプション、セミコロン欠落をログから逆引きします。
15-20% · Generate Reports and Output
PROC PRINT の既定動作を、VAR、SUM、WHERE、ID、BY、LABEL、SPLIT= で制御します。
BY レポートには事前ソートが必要だと判断できる。PROC FREQ、PROC MEANS、PROC UNIVARIATE はレポートだけでなく、データ検証にも使います。
CLASS と BY の違い、基本統計量やマルチレベル要約の読み方を説明できる。PROC FORMAT、LABEL、タイトル、フットノートで読みやすくし、ODS や PROC EXPORT で外部ファイルへ出力します。
STYLE=、DBMS=csv/tab/dlm を確認できる。Practice Sets
各項目の最後に、次のような小さな成果物を作ってください。大きな模試に入る前に、この粒度で手が止まらない状態を作ります。
CSV、Excel、既存 SAS データセットを読み込み、構造確認、型確認、先頭 10 行確認まで行う。
PROC CONTENTS 結果、読み込み時のログ確認。抽出、列制御、文字加工、数値加工、日付計算、グループ累計を 1 本の DATA ステップにまとめる。
壊れたコードを 5 種類用意し、ログを読んで修正する。構文エラー 3 種、ロジックエラー 2 種を含める。
同じデータから一覧、度数表、要約統計、HTML / PDF / RTF / Excel / CSV 出力を作る。
PROC PRINT、PROC FREQ、PROC MEANS、ODS 出力、PROC EXPORT。Final Checklist
WHERE と IFWHERE は読み込み前に絞る。IF は DATA ステップで読み込んだ後に絞る。入力データセットオプションや集計前の件数に影響します。
KEEP= と KEEPKEEP= は読み込み / 書き出し対象をデータセット単位で制御。KEEP ステートメントは DATA ステップ出力変数を制御します。
文字変数の長さは最初に現れた定義で決まります。LENGTH は代入文より前に置くのが基本です。
BY、first.、last.、マージは BY 変数でソート済みであることが前提です。ログの BY 関連エラーを見逃さないようにします。
Readiness Check
次の項目を、何も見ずに短いコードとして書けるか確認してください。詰まった項目は、対応する詳細ページに戻って練習します。
LIBNAME、PROC CONTENTS、PROC IMPORT、XLSX エンジンで、入力元を読み込み、型と長さを確認できる。LENGTH、LABEL、FORMAT、RENAME=、日付定数、条件分岐で、指定された変数を作れる。PROC SORT、BY、first.、last.、SUM ステートメントで、グループごとの 1 行サマリーを作れる。INPUT / PUT、DO ループ、PROC TRANSPOSE、マクロ変数を小問で使える。PROC PRINT(obs=)、PROC FREQ、PROC MEANS、ログの NOTE / WARNING / ERROR で、結果の妥当性を確認できる。PROC PRINT、PROC FORMAT、ODS HTML/PDF/RTF、PROC EXPORT、XLSX エンジンで、人が読む出力と外部ファイルを作れる。Sources
このページは、ローカルに保存した試験コンテンツガイドと、SAS 公式の資格・学習リソースをもとに構成しています。試験仕様は変わる可能性があるため、受験前に必ず公式ページを確認してください。