概要:変数に対し独自の入力形式と出力形式を定義します。
構文
PROC FORMAT <option(s)>; EXCLUDE entry(s); INVALUE <$>name <(informat-option(s))> <value-range-set(s)>; PICTURE name <(format-option(s))> <value-range-set-1 <(picture-1-option(s))>> <value-range-set-2 <(picture-2-option(S))>> ...>; SELECT entry(s); VALUE <$>name <(format-option(s))> <value-range-set(S)>; RUN;
ステートメントの説明
ステートメント | 必須 | 解説 |
EXCLUDE | カタログエントリをFMTLIBオプションとCNTLOUT=オプションによる処理から除外する。 | |
INVALUE | 生データ値を読み込み、変換するための入力形式を作成する。 | |
PICTURE | 数字を印刷するためのテンプレートを作成する。 | |
SELECT | FMTLIBオプションとCNTLOUT=オプションによって処理するためのカタログエントリを選択する。 | |
VALUE | 変数値の印刷に使用する文字列を指定する出力形式を作成する。 |
例(valueステートメントのみ)
データセット
proc print data = sashelp.class; run;

このデータセットにformatを当ててみます。
FORMAT設定
proc format; value $sex_fmt 'M'='男' 'F'='女'; value height_fmt low - <60 = ' < 60' 60 - <70 = '60 < 70' other = '70 < '; run;
その1
formatプロシジャで定義したformatを、formatステートメントで変換しています。
data test_1;
set sashelp.class;
format
sex $sex_fmt.
height height_fmt.;
run;


数値型のHeightに文字列が格納されていて変に見えますが、内部では数値型として保持しています。
その2
formatプロシジャで定義したformatを、put関数内で利用しています。
data test_2; set sashelp.class; sex_new = put(sex, $sex_fmt.); height_new = put(height, height_fmt.); run;


put関数を利用して再定義すれば文字列型として格納できます。
コメント