【SAS】データ型と代表的なフォーマット解説

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SAS上でデータセットを扱う際、定義できるデータ型について詳しく知りたい!
  • データ型毎に設定できる代表的なフォーマットについて知りたい!
目次

【SAS】データ型について

SAS上でデータセットを読み込む際、指定のデータ型毎にフォーマットするケースが多々あります。本記事では、SASで取り扱い可能なデータ型とその代表的なフォーマットついて詳しく解説します。

代表的なデータ型には大きく分けて以下があります。

  • 数値型
  • 文字列型
  • 日付型

それぞれのデータ型について詳しく見るとともに、指定できるフォーマットも併せて確認しましょう。

数値型

数値型とは整数や小数など「数値」を格納するためのデータ型です。

数値型で代表的なフォーマット

SAS上で指定できる数値型のフォーマットとして以下があります。「0.74」という数字を以下でフォーマットした場合の出力結果も併せて示します。

フォーマット出力形式
comma10.20.74
dollar10.2$0.74
percent10.74%

ここで、フォーマットの最後に付与する数値について補足です。例えば、COMMA10.2の場合、10.2と付与されてますね。これは10が合計の桁数を表し、.2は小数点以下の桁数を表しています。

文字列型

文字列型とは、「テキストデータ」を格納するためのデータ型です。

文字列型で代表的なフォーマット

SAS上で指定できる文字列型のフォーマットとして以下があります。”ABcd”というテキストを以下でフォーマットした場合の出力結果も併せて示します。

フォーマット出力形式
char.“ABcd”
upcase.“ABCD”
lowcase.“abcd”

日付型

日付型とは、「2024年1月1日」のように日付を格納するためのデータ型です。

日付列型を細かく分けると「DATE型」「DATETIME型」があります。それぞれで指定可能なフォーマットを以下に示します。

DATE型

「2023年1月10日」のデータを以下でフォーマットした場合の出力結果を示します。

フォーマット出力形式
date5.10JAN
date9.10JAN2023
date11.10-JAN-2023
yymmdd6.230110
yymmdd10.2023-01-10

フォーマットの最後に付与する数値は出力長を示しており、例えばdate5.の場合、先頭の5文字(10JAN)を出力するという意味です。

DATETIME型

2023年1月10日午前00:00:00のデータを以下でフォーマットした場合の出力結果を示します。

フォーマット出力形式
datetime.10JAN23:00:00:00
datetime7.10JAN23
datetime19.10JAN2023:00:00:00

【SAS実践】指定のデータ型でフォーマットする方法

実際にSASプログラムを記述し、指定のデータ型でフォーマットする方法について解説します。

数値型

サンプルデータを数値型でフォーマットした例を以下に示します。

コード

/* 
=====================================================
サンプルデータの作成
=====================================================
*/

DATA SampleData;
  input Amount;
  datalines;
	0.05
	0.74
	1.51
;
RUN;

/* 
=====================================================
サンプルデータをフォーマット
=====================================================
*/

DATA SampleData;
  SET SampleData;
  	/* COMMAw.d フォーマット */
  	AMOUNT_COMMMA  = PUT(AMOUNT, COMMA10.2);
  	
  	/* DOLLARw.d フォーマット */
  	AMOUNT_DOLLAR  = PUT(AMOUNT, DOLLAR10.2);
  	
  	/* PERCENTw.d フォーマット */
   	AMOUNT_PERCENT = PUT(AMOUNT, PERCENT10.);

RUN;

/* 出力 */
PROC PRINT DATA=SampleData;
RUN;

出力イメージ

Obs	Amount	AMOUNT_COMMMA	AMOUNT_DOLLAR	AMOUNT_PERCENT
1	  0.05	         0.05	        $0.05	           5%
2	  0.74	         0.74	        $0.74	          74%
3	  1.51	         1.51	        $1.51	         151%

文字列型

サンプルデータを文字列型でフォーマットした例を以下に示します。

コード

/* 
=====================================================
サンプルデータの作成
=====================================================
*/

DATA SampleData;
  input name $char10.;
  datalines;
	TANAKA
	suzuki
	SaTo
	TokuNaGA
;
RUN;


/* 
=====================================================
サンプルデータをフォーマット
=====================================================
*/

DATA SampleData;
  SET SampleData;
  	/* char フォーマット */
  	name_char    = PUT(name, char20.);
 
  	/* upcase フォーマット */
  	name_upcase  = PUT(name, upcase.);

RUN;

/* 出力 */
PROC PRINT DATA=SampleData;
RUN;

出力イメージ

Obs	   name	   name_char	name_upcase
1	  TANAKA	  TANAKA	     TANAKA
2	  suzuki	  suzuki	     SUZUKI
3	    SaTo	    SaTo	       SATO
4	TokuNaGA	TokuNaGA	   TOKUNAGA

日付型

サンプルデータを日付型でフォーマットした例を以下に示します。

コード

/* 
=====================================================
サンプルデータの作成
=====================================================
*/

DATA SampleData;
input date : yymmdd10.;
format date date9.;
datalines;
2023/10/10
2024/01/01
2024/02/10
;
RUN;


/* 
=====================================================
サンプルデータをフォーマット
=====================================================
*/

DATA SampleData;

	/* データセットを指定 */
	SET SampleData;
	
    /* date型 → datetimeに変換 */
    datetime = dhms(date, 0, 0, 0);
    format datetime datetime20.;
RUN;


/* 出力 */
PROC PRINT DATA=SampleData;
RUN;

出力イメージ

Obs	     date	          datetime
1	10OCT2023	10OCT2023:00:00:00
2	01JAN2024	01JAN2024:00:00:00
3	10FEB2024	10FEB2024:00:00:00

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

目次