Em SAS, fora de uma etapa de dados, o que é a melhor maneira de substituir um caractere em uma variável de macro com um espaço em branco?

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

  •  22-08-2019
  •  | 
  •  

Pergunta

Em SAS, fora de uma etapa de dados, o que é a melhor maneira de substituir um caractere em uma variável de macro com um espaço em branco?

Parece que TRANSLATE seria uma função bom para uso. No entanto, quando usando %SYSFUNC com esta função, os parâmetros não são cercados com aspas. Como indicar um espaço em branco deve ser usado como substituto?

Foi útil?

Solução

Não há citações na linguagem macro. As únicas citações personagens que estão em uso são o &, % etc., para indicar que o texto deve ser interpretado como um "operador" macro. Um espaço em branco é representado por %str( ) como indicado acima no post de Carolina.

Outras dicas

O str% () (com um espaço em branco entre os parênteses) pode ser usado para indicar um espaço em branco para este parâmetro. Também deve ter cuidado com traduzir ... o 2º param é o caractere de substituição ... no entanto, em TRANWRD é revertida.

    %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

Você pode usar perl reg ex vez, como:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top