我想将YYYYMM格式的字符串日期变量转换为MonYY格式的新变量。
例如,如果字符串为201810,则新变量将为OCT18(SAS中的monyy。格式)
示例:
%let var = '201810';
如何创建一个新的变量,以所需的格式显示newVar
?
答案 0 :(得分:2)
为什么要使用宏以及带引号的值?
从'201810'到'OCT18'(在宏环境中)
%let var = '201810';
%let var_as_monyy = %sysfunc(quote(%sysfunc(putn(%sysfunc(inputn(%sysfunc(dequote(&var)),yymmn6)),monyy5.)),%str(%')));
%put &=var;
%put &=var_as_monyy;
201810 到 OCT18 (在宏环境中)
%let var = 201810;
%let var_as_monyy = %sysfunc(putn(%sysfunc(inputn(%sysfunc(dequote(&var))01,yymmn6)),monyy5.));
%put &=var;
%put &=var_as_monyy;
数据步骤和数据集上下文中的'201810'日期字符串
%let var = '201810';
data want;
date = input (&var, yymmn6.);
format date monyy5.;
run;
proc print data=want;run;
答案 1 :(得分:1)
有两种方法,一种在数据步骤中显示,也可以用于创建宏变量和仅使用宏函数。
选项1:
%let var = '201810';
data demo;
y=input(&var., yymmn6.);
z=put(y, monyy5.);
call symputx('newVar', z);
run;
%put &newVar.;
选项2:
%let NewVar2 = %sysfunc(inputn(%sysfunc(dequote(&var)), yymmn6.), monyy5.);
%put &NewVar2.;