Economics & Deeplearning

날짜관련 질문해 봅니다! 본문

SAS/SAS 질문과 답변

날짜관련 질문해 봅니다!

이슈카 2016. 2. 20. 13:17



안녕하세요^^?

또 도움 받고자 들렸습니다.

 시작일종료일
a 2009.01.01  2010.04.02 
a 2008.01.01  2008.12.31 
a 1998.02.01  2008.01.01 
b 1998.02.01  2005.12.31 
c 2009.01.01  9999.12.31 
c 2008.01.01  2008.12.31 
c 2003.02.01  2008.01.01 

이 것이 자료이고

이 자료를 이용해

 

 시작일종료일1998199920002001200220032004200520062007200820092010201120122013
a 2009.01.01  2010.04.02 nnnnnnnnnnnyynnn
a 2008.01.01  2008.12.31 nnnnnnnnnnynnnnn
a 1998.02.01  2008.01.01 yyyyyyyyyynnnnnn
b 1998.02.01  2005.12.31 yyyyyyyynnnnnnnn
c 2009.01.01  9999.12.31 nnnnnnnnnnnyyyyy
c 2008.01.01  2008.12.31 nnnnnnnnnnynnnnn
c 2003.02.01  2008.01.01 nnnnnyyyyynnnnnn

이렇게 만들고

 

최종적으로는

a 회사 b 회사 c회사 각각 하나씩 만들고 싶답니다...ㅠㅠ

 

이거.. 아무리 생각해도 잘 답이 안나와서요;

 

혹시 도와주실 수 있으실까요?

시작일 종료일 날짜 변수로 만드는 방법은 대강 알고있지만

나머지는 어찌해야 좋을 지 모르겠습니다.

ㅠㅠ

 

 

추신

다시보니 위에 엑셀표가 길어서 짤리네요.

최종적으로는 2013년 파일까지 만들 예정입니다.

 

여기서 복잡해 지면 분기별로 들어갈 예정인데.. 거기까지도 혹시 알려주실 수 있으시면 감사드립니다.

꼭 부탁드릴게요!!!

======================================================================================================================

회사 합쳐서요 end 의 년도를 첫번째 관찰치의 년도로 바꿨습니다.

프로그램 자체는 매크로가 어렵다고 하셔서, sasmaster 님이 작성하신걸로 했구요.

temp1로 회사별 처음과 끝 년도만 맞춰줬어요 ㅎㅎ



data temp;

input id $ start : $10. end : $10.;

cards;

a 2009.01.01 2010.04.02

a 2008.01.01 2008.12.31

a 1998.02.01 2008.01.01

b 1998.02.01 2005.12.31

c 2009.01.01 9999.12.31 

c 2008.01.01 2008.12.31 

c 2003.02.01 2008.01.01 

;run;


proc sort;by id; run;

/* 이부분이 회사 합치는 부분입니다. */

data temp1 (drop=first endyear);

set temp;

by id;

if first.id =1 then do; first=1; endyear= substr(end,1,4); retain endyear; end; 

if last.id=1 then substr(end,1,4)=endyear;

if last.id=1;

run;


data new;

   length y1998 - y2013 $1;

   set temp1;

   ystart = input(scan(start,1,'.'),4.);

   yend   = input(scan(end,1,'.'),4.);

 

   array yearflag (*) y1998 - y2013;

   do i = 1 to dim(yearflag);

      if ystart <= i + 1997 <= yend then yearflag(i) = 'Y';

                                   else yearflag(i) = 'N';

   end;      

run;



Comments