Tutorial: Trabalhando com Variáveis Texto no SAS

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;

tutorial_string_sas

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;

tutorial_string_sas2

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;

tutorial_string_sas3

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;

tutorial_string_sas4

Ou então utilizar a função propcase():

data exemplo_propcase;
    campo_a = "andre";
    campo_novo = propcase(campo_a);
run;

tutorial_string_sas5

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;

tutorial_string_sas6

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;

tutorial_string_sas7

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;

tutorial_string_sas8

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;

tutorial_string_sas9

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;

tutorial_string_sas10

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;

tutorial_string_sas13

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;

tutorial_string_sas12

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

Se este post te ajudou de alguma forma, curte o link ou deixe um comentário. E se tiver outros amigos que trabalham com esse material, não deixe de compartilhar com eles o site.  Obrigado.

Anúncios

1 comentário

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 )

Foto do Google+

Você está comentando utilizando sua conta Google+. 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 )

w

Conectando a %s