Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SAS中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?_Sas_Sas Macro - Fatal编程技术网

在SAS中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?

在SAS中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?,sas,sas-macro,Sas,Sas Macro,在SAS中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么 看来翻译将是一个很好的使用功能。但是,将%SYSFUNC与此函数一起使用时,参数不会用引号括起来。您如何指示应使用空白作为替换?在参数之间带有空白的%str可用于指示此参数的空白。还要注意翻译…第二个参数是替换字符…但是在TRANWRD中它是反向的 %macro test ; %let original= translate_this_var ; %let replaceWithThis= %str

在SAS中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么


看来翻译将是一个很好的使用功能。但是,将%SYSFUNC与此函数一起使用时,参数不会用引号括起来。您如何指示应使用空白作为替换?

在参数之间带有空白的%str可用于指示此参数的空白。还要注意翻译…第二个参数是替换字符…但是在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

参数之间为空的%str可用于指示此参数为空。还要注意翻译…第二个参数是替换字符…但是在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

宏语言中没有引号。使用的唯一引号字符是&、%等,以指示文本应解释为宏运算符。如上面Carolina的帖子所示,空格由%str表示。

宏语言中没有引号。使用的唯一引号字符是&、%等,以指示文本应解释为宏运算符。如上面Carolina的帖子所示,空白由%str表示。

您可以改用perl reg ex,如:

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

您可以改用perl reg ex,如:

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