안녕하세요, SAS 초보로 요새 매크로 부분을 공부 중인 사람입니다. 아래와 같이 코드를 짰는데요 %MACRO BINNING(); DATA _NULL_; SET TMP; ARRAY VAR {*} _ALL_; CALL SYMPUT('N', DIM(VAR)); %DO I = 1 %TO &N; CALL SYMPUT('VN', VNAME(VAR{&I})); CALL EXECUTE('PROC RANK DATA = TMP(KEEP = &VN) OUT = &VN._BIN GROUPS = 5 TIES = DENSE;' || 'VAR &VN;' || 'RUN;' ); %END; RUN; %MEND BINNING; %BINNING(); 원 데이터 TMP에서 변수를 하나씩 꺼내 PROC RANK를 이용해 구간을 자르려는게 제 의도인데요! 매크로를 실행시키면 의도한 대로 각변수가 구간이 잘려지고 관련된 데이터 셋들이 형성은 되는데... 루프가 안멈춘다고 해야할지 매크로가 안멈춘다고 해야할지... PROC RANK를 실행하는 과정이 끊임없이 반복되어 제가 강제적으로 종료를 시켜야하더라고요. N을 통해서 DO LOOP의 끝을 지정해줬다고 생각하는데... 왜 끊임 없이 돌아가는지 아시는 분 계시는지요 ㅠ
... View more