Trabalhando com Strings No SAS

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;
string

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;

string_2

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;

string_3

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;

string_4

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;

string_5

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s