我有一个数据集,其中包含给定项目的开始和结束日期。我正在尝试计算我们每年正在运行的项目数量,因此,如果一个项目从2010-2013年开始,则应该在2010、2011、2012和2013年进行计数。我不确定如何实现这一目标,但是我有研究了INTCK函数,但我认为这不是我所需要的。这是我的数据:
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
...
有人可以帮我这个忙吗?
答案 0 :(得分:2)
YEAR函数和迭代DO。
data proj;
input Project $ (StartDate EnDDate)(:mmddyy.) UserID;
do year=year(startdate) to Year(enddate);
output;
end;
format ST: EN: mmddyy10.;
cards;
Proj1 1/15/2010 3/21/2013 1
Proj2 7/31/2015 9/3/2018 2
;;;;
run;
proc print;
run;
答案 1 :(得分:0)
它看起来像您想要的东西:
data test;
input Project $ StartDate : date9. EnDDate date9. UserID;
format startdate enddate date9.;
datalines;
Proj1 15JAN2010 21MAR2013 1
Proj2 31JUL2015 03SEP2018 2
;
run;
data test2;
set test;
do i = 0 to (year(enddate)-year(startdate));
year = year(startdate)+i;
drop i;
output;
end;
run;
proc print data=test;run;
proc print data=test2; run;