概要:変数に対し独自の入力形式と出力形式を定義します。
構文
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関数を利用して再定義すれば文字列型として格納できます。

コメント