2009-02-06 7 views
1

SAS에서 데이터 단계를 벗어나 매크로 변수의 문자를 공백으로 대체하는 가장 좋은 방법은 무엇입니까?SAS에서 데이터 단계 외부에서 매크로 변수의 문자를 공백으로 대체하는 가장 좋은 방법은 무엇입니까?

TRANSLATE은 사용하기에 좋은 기능입니다. 그러나 %SYSFUNC을이 함수와 함께 사용하면 매개 변수가 따옴표로 묶이지 않습니다. 공란이 대체품으로 사용되어야 함을 어떻게 나타내십니까?

답변

4

매크로 언어로 인용 부호가 없습니다. 사용중인 유일한 따옴표 문자는 &, % 등이며 텍스트는 매크로 "연산자"로 해석되어야 함을 나타냅니다. 공란은 위에서 언급 한 바와 같이 캐롤라이나 주 지에서 %str()으로 표시됩니다.

5

% str() (괄호 사이에 공백이 있음)을 사용하여이 매개 변수의 비어 있음을 나타낼 수 있습니다. 또한 TRANSLATE와 조심해야합니다 ... 두 번째 매개 변수는 대체 char입니다. 그러나 TRANWRD에서는 역순으로 처리됩니다.

%macro test ; 
    %let original= translate_this_var ; 
    %let replaceWithThis= %str() ; 
    %let findThis= _ ; 
    %let translated= %sysfunc(translate(&original, &replaceWithThis, &findThis)) ; 
    %put Original: &original ***** TRANSLATEd: &translated ; 
    %mend ; 
    %test; 

    %macro test2 ; 
    %let original= translate_this_var ; 
    %let replaceWithThis= %str() ; 
    %let findThis= _ ; 
    %let tranwrded= %sysfunc(tranwrd(&original, &findThis, &replaceWithThis)) ; 
    %put Original: &original ***** TRANWRDed: &tranwrded ; 
    %mend ; 
    %test2 
3

당신이 사용할 수있는 펄 등록 전 대신, 같은 :

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***; 
/* on log 
***ab cd f*** 
*/ 
관련 문제