로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > 참여마당 > Question & Answer
[SAS 프로그래밍] SAS MACRO 2017.09.11
이선영 218 0
http://www.mysas.co.kr/SAS_club/b_answer.asp?b_no=7428&gotopage=1&con=subject&keyword=&cmd=content&bd_no=6&gubun=

안녕하세요 macro가 익숙하지 않아 너무 헤매고 있어 질문 드립니다.

 

macro를 돌려서 똑같은 logic을 1969 부터 1999까지 반복하고 싶습니다. 

 

%macro rolling(y);

 

 

%mend rolling;

 

%ROLLING(1969) <-이 부분은 1969+1 .. 1999 까지 반복하려면 어떻게 해야 할까요?? 

 

게다가 각각 year 에 대해 구한 결과를 year변수와 함께 stack 하고 싶은데 (로직으로 구한 결과를 year=1969 인 변수와 함께 저장하고 추가해 나가면서 1999까지 최종 결과를 한 파일로 저장하고 싶은데 ) 어떻게 하면 좋을까요??

 

일단 제가 쓰던 코드를 첨부파일로 올려 보았습니다.

 

감사합니다!!! 

 

 
  code1.sas
다운로드 수 | 7
    
MYSAS 시샵   [2017/09/14 10:19]
안녕하세요.

해당 과제를 수행하는데 여러 방법이 있지만 매크로를 사용하여 다음과 같이 작성할 수도 있습니다.
또한 do loop을 사용하여 년도를 하나씩 쓰지 않는 방법이 있습니다.

올려주신 코드를 보았는데 매크로 변수로 지정한 y가 %macro와 %mend 사이의 문장에 들어갈 때는 &y ( 또는 &y.) 로 작성해야 합니다.
예제코드 올려드리니 참고하세요.

* 년도별 데이터셋 생성;
%macro rolling(start end);

%do year = &start. %to &end.;

data newtable&year.;
set a;
year=&year.;
run;

%end;

%mend;
%rolling(1969 1999);

* 년도별 data 세로결합;
data newtable;
set newtable1969 - newtable1999;
run;
 
 결과창이 "이페이지에 연결할 수 없음" 이라고 뜹니다.
 proc means; output out에서 median 값 포함