繁体   English   中英

使用SAS%中的功能

[英]Use function in SAS %do

我正在尝试使用SAS。 我创建了一个数据集,其中变量的数量取决于用户选择的周期。 我想要做的是循环这些变量。 我正在尝试使用的宏是(我为该示例设置了固定日期):

%MACRO DO_PERIOD;
    %DO I = 1 %TO %SYSFUNC(intck('month', "01JUL2008"d, "31JUL2009"d));
        %PUT %I
    %END;
%MEND DO_PERIOD;

不幸的是,运行此宏会产生以下错误:

ERROR: A character operand was found in the %EVAL function or %IF 
condition where a numeric operand is required. 
The condition was: %sysfunc(intck('month', "01JUL2008"d, "31JUL2009"d)) 
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro DO_PERIOD will stop executing.

我尝试了很多方法来评估intck函数(例如%eval(%sysfunc(....)),使用输入(...)),但没有任何结果。 我希望你们中的某个人知道在%do语句中评估函数的答案。

一些问题:

  1. 在宏中,没有必要引用文字(例如'月') - 一切都被视为文本。
  2. 您在%put语句中错过了分号
  3. 你需要一个AMPERSAND来表示宏变量 (不是%符号,它会调用一个

看到:

%MACRO DO_PERIOD;
  %DO I = 1 %TO %SYSFUNC(intck(MONTH, "01JUL2008"d,"31JUL2009"d)); 
    %PUT &I; 
  %END; 
%MEND; 
%DO_PERIOD;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM