SAS: 如何拆解日期格式為date9.的字符型變量

/*測試數(shù)據集*/

data mydataset;

? length mydate $20;

? mydate='03MAR2023';output;

? mydate='03MAR2023';output;

? mydate='13MAR2023';output;

? mydate='20MAR2023';output;

? mydate='MAR2023';output;

? mydate='2023';output;

? mydate='UNMAR2023';output;

? mydate='UNunk2023';output;

? mydate='UNunkunun';output;

? mydate='';output;

? mydate='3 MAR 2023';output;

? mydate='03 MAR 2023';output;

? mydate='13 MAR 2023';output;

? mydate='20 MAR 2023';output;

? mydate='MAR 2023';output;

? mydate='UN MAR 2023';output;

? mydate='UN unk 2023';output;

? mydate='UN unk unun';output;

run;

proc format;

invalue monfmt

'JAN'=1 'FEB'=2 'MAR'=3 'APR'=4 'MAY'=5 'JUN'=6 'JUL'=7 'AUG'=8 'SEP'=9 'OCT'=10 'NOV'=11 'DEC'=12;

run;

%macro sort(dataset,cutoffvar);

data &dataset.;

set &dataset.;

length varchar $20;

if prxmatch('/((\d{1,2})?(\s)?([A-Za-z]{3})?(\s)?(\d{4}))?|(\d{4})?(.*)?/',vvalue(&cutoffvar)) >0 then do;

date=prxchange('s/((\d{1,2})?(\s)?([A-Za-z]{3})?(\s)?(\d{4}))?|(\d{4})?(.*)?/$2$4$6$7/',-1,vvalue(&cutoffvar));

if prxmatch('/\d{4}/',vvalue(&cutoffvar)) then yr=input(prxchange('s/.*(\d{4})/$1/',-1,vvalue(&cutoffvar)),??best.);

if prxmatch('/[A-Za-z]{3}/',vvalue(&cutoffvar)) then mon=input(prxchange('s/.*([A-Za-z]{3}).*/$1/',-1,vvalue(&cutoffvar)),??monfmt.);

if prxmatch('/(^0(\d))|(^[1-9][0-9]?)(\s)?[A-Za-a]{3}/',vvalue(&cutoffvar)) then day=input(prxchange('s/(^0(\d))?|(^[1-9][0-9]?)?.*/$2$3/',-1,vvalue(&cutoffvar)),??best.);

varchar=catx('-',ifc(^missing(yr) ,put(yr,??best.)," "),ifc(^missing(mon) ,put(mon,??z2.)," "),ifc(^missing(day) ,put(day,??z2.)," "));

varnum=input(compress(varchar),??yymmdd10.);

end;

format varnum yymmdd10.;

keep &cutoffvar varchar yr mon day varnum date;

run;

%mend;

%sort(mydataset,mydate);

?此次代碼展示了多種情況下的日期格式為date9.的字符型變量的拆解,年月日方便進行計算或者比較大小,同時也輸出了dtc/stdtc/endtc(ISO 8601)格式和完整yymmdd10.的數(shù)值型格式。結果如下圖所示。

????????之后也會分享多種情況下的日期格式為yymmdd10.的字符型變量的拆解。

感謝閱讀,歡迎關注:CDISC與SAS。如有疑問,歡迎留言或者后臺私信交流,共同進步!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容