【问题标题】:SAS - Choose last dataset in library that satisfies specific name conventionSAS - 选择库中满足特定名称约定的最后一个数据集
【发布时间】:2018-03-22 14:40:54
【问题描述】:

假设我有一个名为 mylib 的库。

mylib 库中,保存了以下数据集:

mylib.data_yearly_2015
mylib.data_yearly_2016
mylib.data_yearly_2017
mylib.data_yearly_2018
mylib.data_yearly_2015
mylib.data_mtly_01JUN2015
mylib.data_mtly_01DEC2015
mylib.data_mtly_01JUN2016
mylib.data_mtly_01DEC2016
mylib.data_mtly_01JUN2017
mylib.data_mtly_01DEC2017

现在我需要编写一个宏来专门从mylib 库中选择最新的data_mtly_xxxxxx 表。

比如在当前阶段,应该选择mylib.data_mtly_01DEC2017

但是,如果添加了新数据集,例如 mylib.data_mtly_01JUN2018,则必须选择该表。

如何在 SAS 中执行此操作?

【问题讨论】:

    标签: sas sas-macro


    【解决方案1】:
    1. 获取所有数据集的列表
    2. 使用 SCAN() 和 INPUT() 获取日期部分
    3. 获取最大日期。

      Proc sql noprint;
      
      Select max(input(scan(name, -1, ‘_’), date9.) ) into :latest_date
      From sashelp.vtable
      Where upcase(libname) = ‘MYLIB’ and upcase(memname) like ‘DATA_MTLY_%’;
      
      Quit;
      

    现在您应该在宏变量中拥有最新的日期值,并且可以在您的代码中使用它。

       %put &latest_date.;
    

    如果它看起来像数字而不是日期,则需要应用格式,但应该能够使用 PUT() 对其进行转换。

    注意:代码未经测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      相关资源
      最近更新 更多