今回はYYYYMMDD表記の年月日をYYYY-MM表記にしたいと思います。
結論:SUBSTRと||を使います。
(SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-business.com))
(||:【SAS】||(!!)は文字列の連結ができる。【結合】 | ビジネスイッチ (how-to-business.com))
YYYYMM表記であれば、put(○○,yymmn.)で簡単に作れるのですが、
(PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】 | ビジネスイッチ (how-to-business.com))
ハイフン付(YYYY-MM)はputによる日付変換では作成できません。
/* yymmn */
data data1;
id1 = "20230326";
run;
data data2; set data1;
id2 = input(id1, yymmdd8.);
id3 = put(id2, yymmn.);
run;
- yymmnではYYYYMM表記になる。
- (PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】 | ビジネスイッチ (how-to-business.com))
/* yymm */
data data1;
id1 = "20230326";
run;
data data2; set data1;
id2 = input(id1, yymmdd8.);
id3 = put(id2, yymm.);
run;
- yymmではYYYY”M”MM表記になる。
- (PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】 | ビジネスイッチ (how-to-business.com))
/* yymmdd6 */
data data1;
id1 = "20230326";
run;
data data2; set data1;
id2 = input(id1, yymmdd8.);
id3 = put(id2, yymmdd6.);
run;
- yymmdd6ではYYMMDD表記になる。
- (PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】 | ビジネスイッチ (how-to-business.com))
/* substr */
data data1;
id1 = "20230326";
run;
data data2; set data1;
id2 = substr(id1, 1, 4);
id3 = substr(id1, 5, 2);
id4 = compress(id2||"-"||id3);
run;
- SUBSTRと||を用いて、YYYY-MM表記にしている。
- (SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-business.com))
- (||:【SAS】||(!!)は文字列の連結ができる。【結合】 | ビジネスイッチ (how-to-business.com))
なお、YYYY/MM表記でもSUBSTRと||を用いる必要があります。
/* substr_2 */
data data1;
id1 = "20230326";
run;
data data2; set data1;
id2 = substr(id1, 1, 4);
id3 = substr(id1, 5, 2);
id4 = compress(id2||"/"||id3);
run;
- SUBSTRと||を用いて、YYYY/MM表記にしている。
- (SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-business.com))
- (||:【SAS】||(!!)は文字列の連結ができる。【結合】 | ビジネスイッチ (how-to-business.com))