こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- SAS上でデータセットを扱う際、定義できるデータ型について詳しく知りたい!
- データ型毎に設定できる代表的なフォーマットについて知りたい!
【SAS】データ型について
SAS上でデータセットを読み込む際、指定のデータ型毎にフォーマットするケースが多々あります。本記事では、SASで取り扱い可能なデータ型とその代表的なフォーマットついて詳しく解説します。
代表的なデータ型には大きく分けて以下があります。
- 数値型
- 文字列型
- 日付型
それぞれのデータ型について詳しく見るとともに、指定できるフォーマットも併せて確認しましょう。
数値型
数値型とは整数や小数など「数値」を格納するためのデータ型です。
数値型で代表的なフォーマット
SAS上で指定できる数値型のフォーマットとして以下があります。「0.74」という数字を以下でフォーマットした場合の出力結果も併せて示します。
フォーマット | 出力形式 |
---|---|
comma10.2 | 0.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による予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら