在SAS中跨时间创建变量

时间:2018-10-15 18:12:50

标签: datetime sas

我有一个数据集,其中包含给定项目的开始和结束日期。我正在尝试计算我们每年正在运行的项目数量,因此,如果一个项目从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
   ...

有人可以帮我这个忙吗?

2 个答案:

答案 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;

enter image description here

答案 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;