В SAS, за пределами этапа обработки данных, каков наилучший способ заменить символ в макропеременной на пробел?

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

  •  22-08-2019
  •  | 
  •  

Вопрос

В SAS, за пределами этапа обработки данных, каков наилучший способ заменить символ в макропеременной на пробел?

Кажется , что TRANSLATE было бы хорошей функцией для использования.Однако при использовании %SYSFUNC с помощью этой функции параметры не заключаются в кавычки.Как вы указываете, что пробел следует использовать в качестве замены?

Это было полезно?

Решение

В макроязыке нет кавычек.Единственными символами , заключенными в кавычки , которые используются , являются & , % и т.д.указать, что текст должен интерпретироваться как макрос "operator".Пробел представлен %str( ) как указано выше в сообщении Каролины.

Другие советы

%str( ) (с пробелом между скобками) может использоваться для указания пробела для этого параметра.Также будьте осторожны с TRANSLATE ... 2-й параметр - это символ замены ... однако в TRANWRD он перевернут.

    %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

вместо этого вы можете использовать perl reg ex, например:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top