如何在SAS中将无日的yyyy/mm格式日期转换为NOV2020格式
SAS中yyyy/mm格式转NOV2020格式的方法
要将无日的yyyy/mm格式日期(如2020/11)转换为NOV2020格式,核心是先构造完整的SAS日期值(补1号),再应用对应格式,以下是具体实现方式:
情况1:输入为字符型变量
如果你的日期是字符类型(如变量char_date值为'2020/11'),可以通过补日、转日期值、应用格式三步完成:
data want; set have; /* 补1号构造完整日期字符串,转成SAS日期值 */ sas_date = input(cats(char_date, '/01'), yymmdd10.); /* 用MONYY7.格式输出NOV2020样式 */ format sas_date monyy7.; run;
也可以拆分年月后用mdy函数构造日期:
data want; set have; year = input(scan(char_date, 1, '/'), 4.); month = input(scan(char_date, 2, '/'), 2.); sas_date = mdy(month, 1, year); format sas_date monyy7.; run;
情况2:输入为数值型变量
如果你的日期是数值类型(如变量num_date值为202011),可以先转字符补日再处理:
data want; set have; sas_date = input(cats(put(num_date, z6.), '01'), yymmdd8.); format sas_date monyy7.; run;
关键说明
MONYY7.是SAS内置格式,专门用于输出三位月份缩写+四位年份的样式(如NOV2020);- SAS日期值必须包含日,补1号是通用处理方式,不会影响年月的展示结果。
内容的提问来源于stack exchange,提问作者NewUsr_stat
相关产品推荐
相关产品推荐

