Как преобразовать строковую дату 'YYYYMM' в формат MonYY? - PullRequest
0 голосов
/ 10 октября 2018

Я хочу преобразовать строковую переменную даты в форме YYYYMM в новую переменную в форме MonYY.

Например, если строка 201810, тогда новой переменной будет OCT18 (формат monyy. ВSAS)

Пример: %let var = '201810';

Как я могу создать новую переменную, скажем newVar в желаемом формате?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Почему вы используете макрос и значение в кавычках?

'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' строка даты в шаге DATA и контексте набора данных

%let var = '201810';
data want;
  date = input (&var, yymmn6.);
  format date monyy5.;
run;
proc print data=want;run;
0 голосов
/ 10 октября 2018

Вот два способа, один из которых показан на шаге данных, который также можно использовать для создания макропеременной и использования только макрофункций.

Вариант 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.;
...