SAS, en dehors d'une étape de données, ce qui est la meilleure façon de remplacer un caractère dans une variable macro avec un blanc?

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

  •  22-08-2019
  •  | 
  •  

Question

Dans SAS, en dehors d'une étape de données, ce qui est la meilleure façon de remplacer un caractère dans une variable macro avec un blanc?

Il semble que TRANSLATE serait une bonne fonction à utiliser. Cependant lors de l'utilisation %SYSFUNC avec cette fonction, les paramètres ne sont pas entourés de guillemets. Comment indiquez-vous doit être utilisé un blanc en remplacement?

Était-ce utile?

La solution

Il n'y a pas de guillemets dans la langue macro. Les seules citations caractères qui sont utilisés sont les &, etc. % pour indiquer que le texte doit être interprété comme une macro « opérateur ». Un blanc est représenté par %str( ) comme indiqué plus haut dans le poste de Caroline.

Autres conseils

% str () (avec un espace entre les parenthèses) peut être utilisé pour indiquer un flan pour ce paramètre. Aussi soyez prudent avec TRADUIRE ... la 2ème est le param caractère de remplacement ... mais en TRANWRD il est inversé.

    %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

vous pouvez utiliser Perl reg ex au lieu, comme:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top