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?

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

  •  22-08-2019
  •  | 
  •  

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?

È stato utile?

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***
*/
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top