In SAS, außerhalb eines Datums Schritt, was ist der beste Weg, um ein Zeichen in einem Makro-Variable mit einem leeren zu ersetzen?

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

  •  22-08-2019
  •  | 
  •  

Frage

In SAS, außerhalb eines Datums Schritt, was ist der beste Weg, um ein Zeichen in einem Makro-Variable mit einem leeren zu ersetzen?

Es scheint, dass TRANSLATE eine gute Funktion zu nutzen wäre. Jedoch bei der Verwendung von %SYSFUNC mit dieser Funktion werden die Parameter nicht mit Anführungszeichen umgeben. Wie zeigen Sie ein leeres soll als Ersatz verwendet werden?

War es hilfreich?

Lösung

Es gibt keine Zitate in Makrosprache. Die einzigen Anführungszeichen Zeichen, die in Gebrauch sind, sind die &, % usw., um anzuzeigen, dass der Text als Makro „Operator“ interpretiert werden soll. Ein Rohling wird durch %str( ) dargestellt, wie oben in Carolina Post angegeben.

Andere Tipps

% str () (mit Leerzeichen zwischen dem Pars) verwendet werden, um einen Rohling für diesen Parameter anzuzeigen. vorsichtig sein, auch mit UEBER ... die 2. param einwechseln char ist ... aber in TRANWRD es umgekehrt ist.

    %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

Sie verwenden können Perl reg ex statt, wie:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top