【问题标题】:How to make SAS not remove the 0 to the left of a number如何使 SAS 不删除数字左侧的 0
【发布时间】:2022-02-01 11:48:48
【问题描述】:

我是 SAS 编程新手,我正在尝试创建自己的日期格式,即月份名称、年份(4 位数字)和日期(总是两位数字),问题是从 1 到 9 将它们作为 1 个单个数字,并且需要为 2(包括 0)。通过以下方式

我有这个 February20221,我想要这个 February202201

我所做的是这样的:

%let m=%sysfunc(putn(%sysfunc(today()), monname.));
%let y=%sysfunc(putn(%sysfunc(today()), year));
%let d=%sysfunc(putn(%sysfunc(today()), day));

%let date= %sysfunc(cat(&m,&y,&d));

我怎么能添加这个?我试过用 cat 函数,用 put、input... 一切,但它总是消除右边的 0。

非常感谢您

【问题讨论】:

    标签: date sas


    【解决方案1】:

    Proc Format 是创建自定义日期格式的正确工具。

    以下是 Proc 格式的情况:

    • 图片声明创建图片格式。图片格式告诉 SAS 如何显示数字(SAS 日期是整数)。
    • dtfmt 是格式的名称,默认选项设置长度。
    • Other Keyword 指定格式应应用于它遇到的所有值。
    • %B%Y%0d 是一系列指令。指令指定应如何呈现日期值。你可以看到完整的指令列表here

    看看这是否适合你

    proc format; 
      picture dtfmt (default=30)
        other = '%B%Y%0d' (datatype=date)
      ;
    run;
    
    %let date= %sysfunc(date(), dtfmt.);
    
    %put &date.;
    

    打印出来:

    February202201
    

    注意:根据您的Locale System Option,结果可能会有所不同。

    【讨论】:

    • 非常感谢您的贡献,非常感谢,我试图在宏变量中获得的结果将是 Febrero202101 格式,大写字母 F,我该如何更改?
    • 在你的问题中,你写道:“我有这个 February20221,我想要这个 February202201”。你想要二月还是二月?
    • 对不起,是我的错误,我想在二月份得到它,如果可能的话,你能解释一下proc格式里面的内容吗
    • 我唯一的问题是我需要大写月份的第一个字母。非常感谢
    • 我刚刚用解释更新了我的答案。
    猜你喜欢
    • 2010-10-10
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多