【问题标题】:Create a dynamic dataset name with SAS Macros使用 SAS 宏创建动态数据集名称
【发布时间】:2020-10-03 22:35:56
【问题描述】:

我在使用宏变量创建数据集名称时遇到问题。所以基本上我想通过宏变量创建Region_Jun_14Jun_14 是当前月份和日期。任何线索将不胜感激:)

CREATE TABLE Region_Jun_14 AS
    SELECT 
        VAR1, VAR2, VAR3
    FROM 
       ALL_REGION
     ;
    QUIT
    ; 

【问题讨论】:

  • 你创建了什么宏变量?它有什么价值?
  • 如果您要走这条路,我建议您使用月份作为数字。这让您以后想使用这些数据集进行自动化和泛化时稍微容易一些。

标签: sas dataset sas-macro proc proc-sql


【解决方案1】:

如果我理解得很好,您想通过月和日宏将表命名为您的 SQL。如果你想要这个,它会对你有所帮助:

/*example table witouth row */
    data ALL_REGION;
    length VAR1 VAR2 VAR3 $1;
    delete;
    run;
    /*get month and day from today() via macros */
    %let sysm= %sysfunc(putn(%sysfunc(today()),monname3.));
    %let sysd= %sysfunc(day(%sysfunc(today())));
    %put mount is : &sysm day is : &sysd.;

    /*create table region_month_day table from all_region table */
    proc sql;
    CREATE TABLE Region_&sysm._&sysd. as
     SELECT 
        VAR1, VAR2, VAR3
      FROM 
       ALL_REGION
     ;
    quit;

SAS 日志:

123      /*example table witouth row */
124      data ALL_REGION;
125      length VAR1 VAR2 VAR3 $1;
126      delete;
127      run;

NOTE: Variable VAR1 is uninitialized.
NOTE: Variable VAR2 is uninitialized.
NOTE: Variable VAR3 is uninitialized.
NOTE: The data set WORK.ALL_REGION has 0 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds


128      /*get month and day from today() via macros */
129      %let sysm= %sysfunc(putn(%sysfunc(today()),monname3.));
130      %let sysd= %sysfunc(day(%sysfunc(today())));
131      %put mount is : &sysm day is : &sysd.;
mount is : Jun day is : 14
132
133      /*create table region_month_day table from all_region table */
134      proc sql;
135      Create table Region_&sysm._&sysd. as
136       SELECT
137          VAR1, VAR2, VAR3
138        FROM
139         ALL_REGION
140       ;
NOTE: Table WORK.REGION_JUN_14 created, with 0 rows and 3 columns.

141      quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds

【讨论】:

  • 这真是太棒了!非常感谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多