Создание переменных за промежуток времени в SAS - PullRequest
0 голосов
/ 15 октября 2018

У меня есть набор данных, который включает даты начала и окончания данного проекта.Я пытаюсь подсчитать, сколько проектов мы выполняем в год, и поэтому, если проект идет с 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 голосов
/ 15 октября 2018

Это похоже на то, что вы ищете:

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;
0 голосов
/ 15 октября 2018

ГОД функция и итеративный 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

...