こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ!
- SASプログラミングによる日付型データの変換方法を詳しく学びたい!
- DATE型とDATETIME型の相互変換方法が知りたい!
- 文字列型とDATE/DATETIME型の相互変換方法が知りたい!
目次
【参考】データ型・フォーマットの変換方法
本記事では日付型のデータに着目し、様々なデータ型変換手法を解説します。
日付だけでなく、数値や文字列等のデータ型変換に際しても本サイトで解説しています。その際よく用いるINPUT関数・PUT関数の使い方について詳しく知りたい方はこちらの記事をご覧ください。
【SAS】文字列型を日付型データに変換
文字列型のデータ項目を日付型のデータに変換する方法について解説します。
DATE形式の文字列型変数をDATETIME・DATE型に変換
DATE形式の文字列型変数をDATETIMEおよびDATE型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
input date_string$CHAR10.;
datalines;
01JAN2022
02JAN2023
03JAN2024
;
RUN;
/*
=====================================================
フォーマット変換
=====================================================
*/
DATA SampleData;
/* データセットを指定 */
SET SampleData;
/* anydtdte20.を使用してdatetime型に変換 */
datetime_value = input(date_string, anydtdte20.);
/* 時間を00:00:00に設定 */
datetime_value = dhms(datetime_value, 0,0,0);
/* date型のデータ作成 */
date_value = DATEPART(datetime_value);
/* フォーマット */
format datetime_value datetime19.
date_value date9.;
RUN;
/* 出力 */
PROC PRINT DATA=SampleData;
RUN;
出力イメージ
Obs date_string datetime_value date_value
1 01JAN2022 01JAN2022:00:00:00 01JAN2022
2 02JAN2023 02JAN2023:00:00:00 02JAN2023
3 03JAN2024 03JAN2024:00:00:00 03JAN2024
DATETIME形式の文字列型変数をDATETIME・DATE型に変換
DATETIME形式の文字列型変数をDATETIME、DATEおよびTIME型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
input datetime_string $CHAR19.;
datalines;
01JAN2022:12:30:00
02JAN2023:11:40:10
03JAN2024:10:20:20
;
RUN;
/*
=====================================================
フォーマット変換
=====================================================
*/
DATA SampleData;
/* データセットを指定 */
SET SampleData;
/* anydtdtm19.を使用してdatetime型に変換 */
datetime_value = input(datetime_string, anydtdtm19.);
/* date型の項目作成 */
date_value = DATEPART(datetime_value);
/* time型の項目作成 */
time_value = TIMEPART(datetime_value);
/* フォーマット */
format datetime_value datetime19.
date_value date9.
time_value time8.;
RUN;
/* 出力 */
PROC PRINT DATA=SampleData;
RUN;
出力イメージ
Obs datetime_string datetime_value date_value time_value
1 01JAN2022:12:30:00 01JAN2022:12:30:00 01JAN2022 12:30:00
2 02JAN2023:11:40:10 02JAN2023:11:40:10 02JAN2023 11:40:10
3 03JAN2024:10:20:20 03JAN2024:10:20:20 03JAN2024 10:20:20
【SAS】日付型を文字列型データに変換
日付型のデータ項目を文字列型のデータに変換する方法について解説します。
DATE型を文字列型に変換
DATE型変数を文字列型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
format date date9.;
informat date anydtdte.;
input date;
datalines;
01JAN2022
02JAN2022
;
RUN;
/*
=====================================================
フォーマット変換
=====================================================
*/
DATA SampleData;
/* データセットを指定 */
SET SampleData;
/* date型を文字列型に変換 */
date_str = PUT(date, date9.);
/* データ型確認 */
date_str_type = VTYPE(date_str);
putlog "date_str_type: " date_str_type;
RUN;
/* 出力 */
PROC PRINT DATA=SampleData;
RUN;
出力イメージ
Obs date date_str date_str_type
1 01JAN2022 01JAN2022 C
2 02JAN2022 02JAN2022 C
DATETIME型を文字列型に変換
DATETIME型変数を文字列型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
format datetime datetime19.;
informat datetime anydtdte19.;
input datetime;
datalines;
01JAN2022:12:30:00
02JAN2022:11:40:10
;
RUN;
/*
=====================================================
フォーマット変換
=====================================================
*/
DATA SampleData;
/* データセットを指定 */
SET SampleData;
/* date型を文字列型に変換 */
datetime_str = PUT(datetime, datetime19.);
/* データ型確認 */
datetime_str_type = VTYPE(datetime_str);
putlog "date_str_type: " datetime_str_type;
RUN;
/* 出力 */
PROC PRINT DATA=SampleData;
RUN;
出力イメージ
Obs datetime datetime_str datetime_str_type
1 01JAN1960:06:17:26 01JAN1960:06:17:26 C
2 01JAN1960:06:17:27 01JAN1960:06:17:27 C
【SAS】DATE型とDATETIME型の相互変換
DATE型とDATETIME型の変数を相互変換する方法について解説します。
DATE型をDATETIME型に変換
DATE型変数をDATETIME列型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
format date date9.;
informat date anydtdte.;
input date;
datalines;
01JAN2022
02JAN2022
;
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 01JAN2022 01JAN2022:00:00:00
2 02JAN2022 02JAN2022:00:00:00
DATETIME型をDATE型およびTIME型にそれぞれ変換
DATETIME型変数をDATE列型に変換したい場合、次のように記述します。
コード
/*
=====================================================
サンプルデータの作成
=====================================================
*/
DATA SampleData;
format datetime_value datetime19.;
input datetime_value datetime19.;
datalines;
01JAN2022:12:30:00
02JAN2022:13:40:10
;
RUN;
/*
=====================================================
フォーマット変換
=====================================================
*/
DATA SampleData;
/* データセットを指定 */
SET SampleData;
/* DATE型部分のみ抽出 */
date_value = DATEPART(datetime_value);
/* TIME型部分のみ抽出 */
time_value = TIMEPART(datetime_value);
/* フォーマット */
format date_value date9. time_value time8.;
RUN;
/* 出力 */
PROC PRINT DATA=SampleData;
RUN;
出力イメージ
Obs datetime_value date_value time_value
1 01JAN2022:12:30:00 01JAN2022 12:30:00
2 02JAN2022:13:40:10 02JAN2022 13:40:10
【参考】SASプログラミング記事一覧
当サイトではSASを用いたプログラミング解説記事を多数掲載しております。
SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら