【发布时间】:2021-06-05 04:34:29
【问题描述】:
我有一个数据集,其中包含给定项目的开始日期和结束日期。我正在尝试计算我们每年运行的项目数量,因此如果一个项目从 2010 年到 2013 年进行,那么它应该在 2010 年、2011 年、2012 年和 2013 年计算。我在之前的数据集中进行了这项工作,但正在运行它在一个新数据集上,我在 do 循环中遇到错误。
|Project |StartDate| EnDDate | UserID |
|:-------:|:--------:|:--------:|:-------:|
|Proj1 |1/15/2010|3/21/2013| 1|
|Proj2 |7/31/2015| 9/3/2018| 2|
这是我想要得到的:
|Project |StartDate |EnDDate |Year |UserID|
|:-------:|:---------:|:---------:|:----:|:-----:|
| Proj1 | 1/15/2010| 3/21/2013 |2010 |1|
| Proj1 | 1/15/2010| 3/21/2013 |2011 |1|
| Proj1 | 1/15/2010| 3/21/2013 |2012 |1|
| Proj1 | 1/15/2010| 3/21/2013 |2013 |1|
...
我一直在使用下面的代码
data test2;
set users;
do i = 0 to (year(enddate)-year(startdate));
year = year(startdate)+i;
drop i;
output;
end;
run;
但我收到以下错误:错误:无效的 DO 循环控制信息,INITIAL 或 TO 表达式丢失或 BY 表达式缺失、为零或无效。
我尝试按开始日期、结束日期、开始日期和结束日期排序,并更改日期格式无济于事(它是 DATE9。)。我之前肯定遗漏了一些明显的东西,因为该代码与以前的数据库一起使用,但我不确定我可能会遗漏什么。
非常感谢任何帮助。
【问题讨论】:
-
您的 STARTDATE 和 ENDDATE 变量真的是日期吗?这些变量的类型和长度是多少?他们有附加格式吗?如果是,是什么格式?
-
显示错误信息的详细信息。日志应该显示 startdate 和 enddate 的值。