In SAS, al di fuori di un passo di dati, qual è il modo migliore per sostituire un carattere in una variabile macro con un vuoto?
Domanda
In SAS, al di fuori di un passo di dati, qual è il modo migliore per sostituire un carattere in una variabile macro con un vuoto?
Sembra che TRANSLATE
sarebbe una buona funzione da usare. Tuttavia quando si utilizza %SYSFUNC
con questa funzione, i parametri non sono circondate con le citazioni. Come si fa a indicare un vuoto dovrebbe essere utilizzato come sostituto?
Soluzione
Non ci sono citazioni in lingua macro. Gli unici citazioni caratteri che sono in uso sono il &
, %
ecc per indicare che il testo deve essere interpretato come una macro "operatore". Un vuoto è rappresentato da %str( )
come sopra indicato nel post di Carolina.
Altri suggerimenti
La str% () (con uno spazio tra le parentesi) può essere utilizzato per indicare un fustellato per questo parametro. Anche stare attenti con trasformazione ... il 2 ° param è il carattere di sostituzione ... ma in TRANWRD si è invertita.
%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
è possibile utilizzare perl reg ex, invece, come:
%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd f***
*/