サーチ…


前書き

インフォーマットとフォーマットは、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;


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow