SAS では、データ ステップの外で、マクロ変数の文字を空白に置き換える最良の方法は何ですか?
使い勝手が良さそうTRANSLATE
な機能です。ただし、%SYSFUNC
この関数で使用する場合、パラメーターは引用符で囲まれません。代わりに空白を使用する必要があることをどのように示しますか?
%str( ) (かっこの間に空白がある) を使用して、このパラメーターの空白を示すことができます。TRANSLATE にも注意してください。
%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
マクロ言語には引用符はありません。使用されている引用符の文字は&
、%
テキストがマクロの「演算子」として解釈される必要があることを示すなどです。%str( )
空白は、Carolinaの投稿で上記のように表されます。
代わりに、次のようにperlregexを使用できます。
%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd f***
*/