En SAS, fuera de un paso de datos, ¿cuál es la mejor manera de reemplazar un carácter en una variable macro con un espacio en blanco?

StackOverflow https://stackoverflow.com/questions/521207

  •  22-08-2019
  •  | 
  •  

Pregunta

En SAS, fuera de un paso de datos, ¿cuál es la mejor manera de reemplazar un carácter en una variable macro con un espacio en blanco?

Parece que TRANSLATE sería una buena función de su uso. Sin embargo cuando se utiliza %SYSFUNC con esta función, los parámetros no están rodeados de comillas. ¿Cómo se indica un espacio en blanco debe ser utilizado como reemplazo?

¿Fue útil?

Solución

No hay cotizaciones en lenguaje de macros. Las únicas citas personajes que están en uso son los &, % etc., para indicar que el texto debe ser interpretado como un "operador" macro. Un espacio en blanco está representado por %str( ) como se indicó anteriormente en el post de Carolina.

Otros consejos

El str% () (con un espacio en blanco entre las parens) se puede utilizar para indicar un espacio en blanco para este parámetro. También tenga cuidado con TRANSLATE ... el segundo parámetro es el reemplazo de carbón ... sin embargo, en TRANWRD se invierte.

    %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

puede utilizar Perl reg ex lugar, como:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top