Trabalhar com variáveis texto (aka string, var char) é muito comum e sempre necessário. Seja porque a variável não é em sua essência uma string – pode ser uma variável numérica que foi inserida como texto -, seja porque você quer retirar somente algumas partes desejáveis do campo, você sempre precisa dar uma trabalhada nelas.
Este post ensinará como algumas dicas do que pode ser feito com variáveis texto no SAS. Como extrair uma parte da string? Como deixar o campo com a letra inicial maiúscula? Como excluir espaços em branco? Essas e outras funções você encontrará logo abaixo.
Começando com o mais simples, a função substrn() serve para extrair trechos de determinada palavra. A função recebe três argumentos: o nome da variável, a posição de início do trecho que você quer extrair, a quantidade de caracteres que você quer selecionar. Se você quiser extrair da segunda à quinta letra da variável var_1, o comando a ser utilizado é substrn(var_1, 2, 3).
Um exemplo prático de como é possível utilizar a função substrn(): suponha que você tenha uma variável cuja primeira letra represente somente o sexo do indivíduo (0 para homem e 1 para mulher), a segunda e a terceira o ddd e as demais representem efetivamente o número de cadastro do cliente no sistema XYZ. No exemplo abaixo, criamos um campo com a chave de identificação e um outro campo com a marcação de sexo “M” para masculino e “F” para feminino:
/*Cria tabela exemplo*/ data exemplo_substrn; input id $; cards; 01253111 14145622 15556433 09794344 18871255 ; run; /*Trabalha funcao substrn*/ data exemplo_substrn_2; set exemplo_substrn; sistema_XYZ = substrn(id, 4, 5); if substrn(id,1,1) = 0 then sexo = "M"; else sexo = "F"; ddd = substrn(id,2,2); run;
Parecida com a função substrn(), temos a substr(). A lógica é a mesma – você pode verificar utilizando o script acima. Porém, é possível substituir trechos da palavra. No exemplo abaixo, trocamos o caractere inicial pela letra A:
data exemplo_substr;
set exemplo_substrn;
substr(id, 1,1) = "A";
run;
Outras duas funções comumente utilizada, mas muito mais por questões estéticas, são a lowcase() e uppercase(). Elas são utilizadas para deixar caracteres minúsculos e maiúsculos, respectivamente:
data exemplo_conversao;
nome = "andre";
nome_maiusculo = upcase(nome);
nome_minusculo = lowcase(nome);
run;
Se você quiser deixar a letra inicial maiúscula, você pode combinar o substr() com upcase():
data exemplo_inicial_maiuscula;
nome = "andre";
substr(nome,1,1) = upcase(substr(nome, 1, 1));
run;
Ou então utilizar Visitar site a função propca se():
data exemplo_propcase;
campo_a = "andre";
campo_novo = propcase(campo_a);
run;
Para retirar espaços em branco, você pode utilizar o trim() ou o compress(). Porém, o trim() não retira todos os espaços em branco, somente os que estão ao final do nome. Veja no exemplo abaixo a diferença:
data exemplo_espacos;
campo_A = " AAA BBB ";
exemplo_trim = trim(campo_A);
exemplo_compress = compress(campo_A);
run;
Se você quiser tirar somente os espaços em branco da direita, você pode usar o right(). Para os da esquerda, utilize o left():
data exemplos_right_left;
cidade = " Rio de Janeiro ";
direita = right(cidade );
esquerda = left(cidade );
run;
A função scan() serve para extrair determinadas palavras de um campo texto. Os argumentos da função são a variável texto e posição da palavra a ser selecionada. Se você desejar contar a posição de trás para frente, use o sinal de menos. Veja um exemplo simples de como selecionar a primeira, a segunda e a última palavra de uma variável texto:
data exemplo_scan_1;
var_texto = 'Cidade de São Paulo';
primeira_palavra = scan(var_texto, 1);
segunda_palavra = scan(var_texto, 2);
ultima_palavra = scan(var_texto, - 1);
penultima_palavra = scan(var_texto, - 2);
run;
Outro argumento possível é o delimitador que está sendo utilizado para separar as palavras (ou conjunto de palavras). No exemplo abaixo, selecionamos as palavras que estão após a primeira e a segunda vírgula:
data exemplo_scan_2;
var_texto = 'YYY Indústria, ZZZ Serviços, WWW Agricultura';
segunda_palavra_2 = scan(var_texto, 2, ',');
segunda_palavra_3 = scan(var_texto, 3, ',');
run;
Diversos delimitadores podem ser utilizados, veja outros exemplos:
data exemplo_scan_3;
var_texto_A = 'Local e Data: São Paulo, 20 de Março de 2018';
exemplo_1 = scan(var_texto_A, 2, ':');
var_texto_B = 'São Paulo, 20 de Março de 2018 (data e local)';
exemplo_2 = scan(var_texto_B, 2, '(');
var_texto_C = 'email@gmail.com';
exemplo_3 = scan(var_texto_C, 2, '@');
run;
Agora, se você quiser substituir ou remover uma determinada palavra, utilize tranwrd(). A função funciona com três argumentos: o campo texto a ser modificado, a palavra a ser substituída, a palavra que será utilizada. Veja um exemplo onde substituímos a palavra Estado por UF:
data exemplo_tranwrd;
campo_A = "Estado: Minas Gerais";
campo_novo = tranwrd(campo_A, "Minas Gerais", "MG");
run;
Outra possibilidade é buscar a posição de um determinado caractere (ou conjunto de caracteres) em uma palavra. Para isso, utilize o index() com a variável texto e o campo procurado. No exemplo abaixo, sabemos que há um telefone com ddd 011 na variável campo_A e queremos criar um campo com o número do telefone:
data exemplo_index;
campo_A = " 011999999999";
ddd_11 = index(campo_A, '011');
telefone = substrn(campo_A, ddd_11+ 3);
run;
Agora ficou mais simples trabalhar com as variáveis texto!
Se tiver alguma dúvida, algo que você queira fazer e ainda não conseguiu, deixe um comentário que a gente tenta chegar em uma solução.
Leia também:
Como converter caractere para número no SAS
Trabalhando com Strings No SAS
Concatenar campos no SAS
Alterando Comprimento de Campo Novo no SAS
E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados. E se você gosta de tecnologia, escute o podcast Futuristando!
Bons estudos!
2 comentários em “Tutorial: Trabalhando com Variáveis Texto no SAS”