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?
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?
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***
*/