【问题标题】:How to convert string date 'YYYYMM' to MonYY format?如何将字符串日期 'YYYYMM' 转换为 MonYY 格式?
【发布时间】:2018-10-10 16:51:53
【问题描述】:

我想将 YYYYMM 形式的字符串日期变量转换为 MonYY 形式的新变量。

例如,如果字符串是 201810,那么新变量将是 OCT18(SAS 中的 monyy. 格式)

示例: %let var = '201810';

如何以我想要的格式创建一个新变量,例如 newVar

【问题讨论】:

  • 请发布您尝试过的任何内容。你必须在宏变量中有引号吗?这是解决问题的秘诀。你想要数据集变量还是宏变量?

标签: sas enterprise-guide


【解决方案1】:

为什么要使用宏和引用值?

'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;

201810OCT18 在宏观环境中

%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;

【讨论】:

    【解决方案2】:

    这里有两种方式,一种是在数据步骤中显示,也可以用于创建宏变量并仅使用宏函数。

    选项 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.;
    

    【讨论】:

    • 谢谢!这种方法的一种变体奏效了。我需要引号,因为我稍后引用变量的方式,但我也保存了这个变量,没有引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多