サーチ…
前書き
インフォーマットとフォーマットは、SASにそれぞれデータの読み書き方法を伝えるために使用されます。インフォーマットは、外部ファイルからデータを読み取るときにデータストアで一般的に使用されます。インフォーマットは、PROCではめったに使用されません。フォーマットは、データステップとPROCの両方で一般的に使用されます。
備考
SASフォーマットは、数値または文字値を文字値に変換します。フォーマットは、値の表示方法を変更するformatまたはputステートメントを使用して適用することも、 put関数を使用してフォーマット済みの値を新しい変数に格納することもできます。
形式には4つのカテゴリがあります。
- 文字 - 文字変数から文字データ値を書き込むようにSASに指示します。
- 日付と時刻 - 日付、時刻、および日付時刻を表す変数からデータ値を書き込むようSASに指示します。
- ISO 8601 - SASに、ISO 8601標準を使用して日付、時刻、および日時の値を書き込むよう指示します。
- 数値 - 数値変数から数値データ値を書き込むようにSASに指示します。
形式は通常、 <formatname><w>.<d>;形式<formatname><w>.<d>;形式をとり<formatname><w>.<d>; wは幅(任意の小数点を含む)であり、 dは小数点以下の桁数である。
一般的な日付形式(SASの日付値に適用):
-
date9.例:02AUG2016 -
ddmmyyn8.例:02082016 -
ddmmyy8.例えば02/08/16 -
yymmdd10.例:20160802 -
year4.例えば2016
一般的な数値形式(数値に適用):
-
comma11.0例1234567 -
comma12.2例えば1,234,567.00 - ドル
dollar11.2例えばdollar11.2ドル -
nlmnlgbp11.2たとえば£2,468.02
その他のフォーマット:
-
$hex8.、文字列を16進数に変換する -
$upcase.、文字列を大文字に変換する -
$quote.文字列を引用符で囲みます
形式の完全なリストは、こちらをご覧ください > https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm
formatステートメントの使用
format文は、指定された書式を指定された変数に表示目的でのみ適用します。つまり、元の値は変更されません。
data example1 ; Date = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */ Date2 = '31AUG2016'd ; format Date monyy7. Date2 yymmddn8. ; run ;
| 日付 | Date2 |
|---|---|
| AUG2016 | 20160831 |
フォーマット文を使用したデータのグループ化
プロシージャ内でフォーマットを適用することができます。たとえば、 proc summaryまたはproc freq内のグループを変更することができます。
SASの日付のグループ化
data example2 ;
do Date = '01JUN2016'dt to '31AUG2016'dt ;
Days = 1 ;
output ;
end ;
run ;
/* Summarise by year & month */
proc summary data=example2 nway ;
class Date ;
var Days ;
output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ;
format Date yymmn6. ; /* e.g. 201606 */
run ;
| 日付 | 日々 |
|---|---|
| 201606 | 30 |
| 201607 | 31 |
| 201608 | 31 |
/* Summarise by month & year */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ; format Date monyy7. ; /* e.g. JUN2016 */ run ;
| 日付 | 日々 |
|---|---|
| JUN2016 | 30 |
| JUL2016 | 31 |
| AUG2016 | 31 |
フォーマットを使用する利点は、自然な並べ替え順序が保持されることです。
たとえば、 sashelp.classを使用して、各名前の最初の文字の頻度を比較するとします。 substr()関数を使用して最初の文字を探し、新しい変数に対してproc freqを実行することができます。また、 $1.適用することもできます$1.形式をName変数にNameます。
proc freq data=sashelp.class ; table Name ; format Name $1. ; run ;
| 名 | カウント |
|---|---|
| A | 7 |
| B | 4 |
| C | 2 |
| 等 |
カスタムフォーマット
ユーザー定義フォーマットとも呼ばれるカスタムフォーマットは、他のデフォルトフォーマットと同様に作成して使用できます。
/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef 'CA' = 'California'
'MA' = 'Massachusetts'
'NY' = 'New York';
/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;
変数state-varは、新しい書式に従って印刷されます。たとえば、値'CA'は'California'として出力されます。値が'CT'ようにフォーマットされていない場合、その値はデータセットに現れるように印刷されます。
インフォーマットを使用したデータの読み取り
Informatsは、データを読み込むこととして識別されているかSASを伝えるために使用されているinformat声明。
data test;
infile test.csv;
informat id $6.
date mmddyy10.
cost comma10.2
;
input @1 id
@7 date
@20 cost
;
run;
Informatsと書式を一緒に使用して、データを読み込み、以下の給与変数などの異なる形式で書き出すこともできます。
DATA workers;
informat first last $16.;
informat salary 12.1;
informat birthdate 8.;
input
first $
last $
birthdate
salary;
format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;