Nesse post vamos entender algumas formas de lidar com strings no SAS.
Vamos supor que você queira tenha uma tabela com o código de identificação (variável id) e o nome dos clientes:
data tabela_exemplo;
input id $ nome $ ;
cards;
111ABBB Andre
02VBBB4 Paulo
C0BBBAA Marcela
123BADD Rafaela
035ABBB Thiago
0421ADE Marcos
011112A Julia
;
run;
Você pode querer filtrar alguma linha com base no conteúdo. Por exemplo, filtrar a pessoa com nome André:
data tabela_andre;
set tabela_exemplo;
where nome = 'Andre';
run;
Mas e se o nome estiver todo escrito com letras minúsculas?
Então combine o código acima com o comando upcase():
data tabela_andre;
set tabela_exemplo;
where upcase(nome) = 'ANDRE';
run;
Veja que agora o código verifica todas as linhas cujo campo nome, quando posto em letras maiúsculas, é igual a ANDRE. Isso vai acabar com o problema do nome ser minúsculo, ou ter a inicial maiúscula. Não vai fazer diferença, o filtro pegará todos. Esta é uma manobra bem útil para não correr o risco de deixar escapar algum nome que foi inserido em um padrão distinto do que você estaria procurando – encontraria Andre, andre, anDre, etc.
O código acima também poderia ser reescrito utilizando o if no lugar do where:
data tabela_andre;
set tabela_exemplo;
if upcase(nome) = 'ANDRE';
run;
A grande vantagem do if é a velocidade quando temos vários filtros, e também quando queremos criar um campo quando as condições forem atendidas, ao invés de filtrar. Por exemplo, podemos criar um campo chamado fl_andre que recebe 1 quando o nome é Andre e 0 para o restante:
data tabela_andre;
set tabela_exemplo;
if upcase(nome) = 'ANDRE';
run;
Agora, e se você não quiser filtrar somente quando o campo for igual a algo. Talvez você queira filtrar quando o campo possuir determinada sequência de caracteres. Exemplo: o id é formado por uma combinação de variáveis. Quando há BBB em alguma parte do campo id, isto significa que o funcionário é da empresa (e não um terceiro). Sabendo isso, vamos criar uma tabela mantendo somente funcionários cujo id contém BBB:
data tabela_funcionario;
set tabela_exemplo;
where id contains 'BBB';
run;
Para obter o complementar dessa tabela, basta utilizar o NOT CONTAINS.
Outra forma de analisar uma string é com a função substrn(). Esse comando recebe como input um campo da tabela, a posição deste campo a ser analisada e o número de caracteres que se quer analisar. Veja por exemplo como criamos um campo teste utilizando substrn():
data tabela_nova;
set tabela_exemplo;
campo_teste = substrn(id, 2, 3);
run;
Se você quiser filtrar somente funcionários cujo id se inicia com o ‘0’:
data filtra_id;
set tabela_exemplo;
if substrn(id,1,1) = '0';
run;
Um comentário em “Trabalhando com Strings No SAS”