Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date SAS宏按日期循环,如何指示正确的步骤?_Date_Sas_Sas Macro_Do Loops - Fatal编程技术网

Date SAS宏按日期循环,如何指示正确的步骤?

Date SAS宏按日期循环,如何指示正确的步骤?,date,sas,sas-macro,do-loops,Date,Sas,Sas Macro,Do Loops,我需要为年份、季度和月份创建3个SAS表,包括从今天开始的指定范围。我想有一个更聪明的方法可以做到这一点,但我最终得到了这样的结果(比如,如果我需要回到5年前): 问题是,我不知道如何将循环中的一个步骤表示为日期周期,因此我最终得到了精确的数字,这些数字会有所不同(年-每4年,月-每2个月,季度-每16个季度) 我添加了一个一年的循环,试图解释至少几个闰年,但它不起作用。因此,在继续讨论几个月并可能实现另一个嵌套循环之前,我想问一下,是否有更简单的方法来创建这样的表 谢谢!:) 将您的循环更改为

我需要为年份、季度和月份创建3个SAS表,包括从今天开始的指定范围。我想有一个更聪明的方法可以做到这一点,但我最终得到了这样的结果(比如,如果我需要回到5年前):

问题是,我不知道如何将循环中的一个步骤表示为日期周期,因此我最终得到了精确的数字,这些数字会有所不同(年-每4年,月-每2个月,季度-每16个季度)

我添加了一个一年的循环,试图解释至少几个闰年,但它不起作用。因此,在继续讨论几个月并可能实现另一个嵌套循环之前,我想问一下,是否有更简单的方法来创建这样的表


谢谢!:)

将您的循环更改为若干年内的循环,并计算循环中所需的宏变量

示例-非宏版本

 Do I=1 to 5;
     Year=intnx('year', date, 1);

      Rest of code;
 End;

你能显示你想要生成的数据吗?您希望如何存储日期周期的示例将有助于解释您正在尝试执行的操作。如果您只想生成日期范围,那么您可以在数据步骤中完成,并且避免使用宏代码和SQL。谢谢!我已经重写了循环,它工作了:)
%doi=-1%到-5%by-1;值(%sysfunc(intnx(年、今天和一年))%end
 Do I=1 to 5;
     Year=intnx('year', date, 1);

      Rest of code;
 End;