2017-12-18 4 views
1

SAS에서는 명시 적 출력을 선언 할 때 매크로를 참조 할 수 있습니까? 나는 데이터 단계의 시작 부분에 선언 출력 이름으로 매크로 "&에 fname"를 사용하려고 아래의 코드를 사용할 때 그것은 나에게 오류를 제공합니다. (보너스로 출력 데이터 세트의 이름을 일종의 루프로 선언하는 방법이 있으므로 cd2002, cd2003 등을 입력 할 필요가 없습니다.).SAS : 출력에 매크로 참조 포함?

data cd2002 cd2003 cd2004 cd2005; 
    set cd; 
    do i = 2002 to 2005; 
     %let fname=cats(cd,i); 
     if year=i then do; output &fname; end; 
    end 
run; 
+0

내가 데이터를 따로 분리 할 필요 이유에 대해 궁금합니다? 특정 연도 또는 연도를 선택할 수있는 곳에서는 BY 및 CLASER 문을 사용하여 다른 DATA 및 PROC 단계의 연도 데이터를 분리 할 수 ​​있습니다. – Richard

+0

데이터를 MATLAB에로드해야했고 데이터 세트가 너무 커서 한 가지 큰 단계로로드 할 수 없었습니다. 해마다 수출하기가 더 쉬워 보였습니다. – cybervision

+0

MATLAB은 SAS 데이터 세트를로드합니까? MATLAB에로드 할 CSV 파일을 생성하려는 경우 FILEVAR = FILEVAR 옵션을 사용하여 동적으로 파일 이름을 생성 할 수 있습니다. – Tom

답변

1

매크로 루틴을 작성하십시오. 이것은 SAS가 귀하에게 "코드"를 작성하도록하는 방법입니다. 코드를 확장 한 다음 주 인터프리터에 제출하는 매크로 프로세서가 있습니다.

%macro split_cd(to,from); 
%local i; 
data 
    %do i=&to %to &from; 
     cd&i 
    %end; 
; 
set cd; 
%do i=&to %to &from; 
     if year=&i then output cd&i; 
%end; 
run; 
%mend; 

어떤 코드가 생성 sumbitted되었다 볼 수 mprint 옵션을 사용

options mprint; 
%split_cd(2002,2005)