【问题标题】:Creating a macro variable have a list of dates in SAS创建一个宏变量在 SAS 中有一个日期列表
【发布时间】:2014-04-04 10:19:06
【问题描述】:

我是在 SAS 中编写宏的新手,并且是一名熟练的 R 用户,我很难理解如何在 SAS 中做事。 我正在尝试创建一个包含数据集中日期列表的宏变量。

我的代码是 -

proc sql noprint;
select distinct sdate into : sdatem  separated by ' '
from work.date_list;
quit;

%put &sdatem;

但是当我运行这段代码时,代码执行没有任何错误,但是日志中的 %put 语句打印出来

 %put &sdatem;

而不是实际值。知道为什么会这样吗?日期在 yymmddn8 中。格式。

我使用的样本数据是-

DATA compno_date_list; 
INPUT compno sdate; 
DATALINES; 
12490 20090120 
87432 20090120
24643 20090120
87432 20090119
12490 20090105
24643 20090105
;
proc print data=compno_date_list;
run;

任何帮助都会很棒!谢谢

【问题讨论】:

  • 如果您的代码最近运行时出现错误,则可能已将 OBS= 选项设置为零。尝试运行OPTIONS OBS=MAX NOSYNTAXCHECK;,然后再次运行代码。
  • 试过这个。但是还是不行。
  • %put 语句下面的行是否完全空白?
  • 是的。你的意思是在代码中还是在日志中?两者都是空白
  • 语句%put foo &sdatem bar;在日志中返回了什么?

标签: list date macros sas


【解决方案1】:

您的输入数据集应该是work.compno_date_list,而不是work.date_list

proc sql noprint; 选择不同的 sdate 到 : sdatem 以 ' ' 分隔 来自 work.compno_date_list; 辞职; %put &sdatem;

【讨论】:

  • date_list 是一个中间表,我只使用不同的日期值创建。但这有关系吗?甚至 compno_date_list 也会给我相同的不同日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多