SASでは、データステップの外に、空白とマクロ変数に文字を交換するための最良の方法は何ですか?
質問
SASは、データステップの外に、空白とマクロ変数に文字を置き換えるための最良の方法は何ですか?
TRANSLATE
が良い機能を用いることであろうと思われます。この機能で%SYSFUNC
を使用している場合しかし、パラメータは引用符で囲まれていません。どのように空白が代替として使用する必要があることを示すのですか?
解決
マクロ言語には引用符がありません。テキストはマクロ「演算子」として解釈されるべきであることを示すために使用されている文字&
あり、%
など、株価のみ。カロライナの後に上記のようにブランクが%str( )
で表されます。
他のヒント
(括弧の間に空白を有する)%のSTR()は、このパラメータのブランクを示すために使用することができます。また、第二paramは代替文字である... TRANSLATEに注意してください...しかし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
あなたは次のように、代わりにperlのREG EXを使用することができます
%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd f***
*/
所属していません StackOverflow