Formato SAS PROC | Formato predefinido e definido pelo usuário no SAS

Compartilhar no Facebook
Compartilhar no Twitter
Compartilhar no LinkedIn
Compartilhar no telegrama
Compartilhar no Whatsapp

Conteúdo

Passei uma parte significativa da minha carreira como especialista em visualização de dados. Sou muito exigente com a formatação e relatórios. Então, quando comecei a usar SAS, enfrentou alguns desafios ao mudar os formatos de números e caracteres, especialmente quando se trata de datas. Não é de surpreender que Kunal e eu recebamos um bom número de perguntas sobre esse assunto..

E SAS, existem várias opções para melhorar os layouts de relatório. Neste artigo, iremos discutir particularmente sobre os métodos para brincar com o formato dos valores de dados. Deve-se notar que essas mudanças só se aplicam enquanto os resultados são exibidos. Mudar o formato de saída não muda a forma, os dados são armazenados no backend.

Por padrão, SAS fornece vários formatos integrados para lidar com vários formatos, mas não são suficientes para atender aos requisitos personalizados que seus dados podem ter. Por exemplo, podemos ter codificado Masculino e Feminino como M e F (o 0 e 1), mas durante a impressão, gostaríamos de mostrar o campo apenas como MASCULINO e MULHER. Outro exemplo comum é a exibição de códigos de área em números de telefone de 10 dígitos (por exemplo, 123-3456-789).

PD: Este é um artigo longo em comparação com o que eu costumo escrever, então sinta-se à vontade para digerir em pedaços.

O artigo está dividido em 2 partes gerais: Primeiro, entendemos formatos predefinidos e formatos definidos pelo usuário no SAS. A seguir, analisamos várias aplicações e exemplos desses conceitos.

1_proc_format_sas-6665279

Formatos SAS integrados

A seguir, dados de amostra são exibidos contendo detalhes sobre o desempenho do agente. Usaremos este conjunto de dados em exemplos e discussão neste artigo. Aqui, o DOJ está em formato numérico, conforme definido pelo SAS por padrão, a partir de 1 de janeiro de 1960.

2_proc_format_data-2295727Vejamos primeiro a sintaxe da instrução FORMAT: –

Sintaxe: – FORMAT Variable format (s);

Vamos fazer alguns exercícios com a declaração de formato:

Exemplo 1: Mostrar DOJ no formato DDMMAAAA:

Código:

Processar dados de impressão = vendas;
Formato de data DOJ 9. ;
Para correr;

Produção:

3_proc_format-6128743

Aqui está a lista de formatos de data predefinidos disponíveis para alterar o formato de saída das variáveis:

4_proc_format-5452091

Exemplo 2: exibir o valor das vendas em dólares com uma casa decimal

Código:

Processar dados de impressão = vendas;
Formato Salesamount Dollar9.1;
Para correr;

Produção:

5_proc_format_sas-1402548

Lista de formatos de data predefinidos disponíveis para alterar o formato de saída das variáveis:

6_proc_format_sas1-3504838

Exemplo 3: Exibir o valor das vendas em dólares com duas casas decimais com vírgulas e DOJ no formato Weekdate.

Código:

Processar dados de impressão = vendas;
Formato de valor de vendas em dólar 12,2 DOJ WEEKDATE .;
Para correr;

Produção:

7_proc_format_sas-2681156

Necessidade de formatos definidos pelo usuário:

Até agora, vimos como alterar o formato de números e datas com formatos SAS integrados. Mas pode haver muitas vezes em que os formatos integrados do SAS não atendam às nossas necessidades.. Como no conjunto de dados atual, nós queremos:

  1. Shows “MASCULINO” e “FEMININO” ao invés de “M” e “F”
  2. Redefina as categorias A, B, C, D e E como Ultra, Super, Média, Low y Poor
  3. Mostra a frequência do valor de vendas em três categorias ” = 12.000″

Todas essas coisas podem ser feitas com a passagem de dados (o PROC SQL) com a declaração If-Else (ou mudar o caso), mas irá requerer uma nova variável que irá armazenar esses valores formatados. Enquanto que, se quisermos apenas mudar a exibição (e não os valores no conjunto de dados), portanto, criar um formato definido pelo usuário usando PROC FORMAT é uma maneira mais eficiente de fazer essas alterações.

Formatos definidos pelo usuário usando Proc FORMAT

PROC FORMAT é um procedimento que cria um mapeamento de valores de dados para rótulos de dados. O mapeamento FORMAT definido pelo usuário é independente de um conjunto de dados SAS e variáveis ​​e deve ser explicitamente atribuído em um DATASTEP e / o PROC subsequente.

Sintaxe de PROC FORMAT: –

8_proc_format_sas-8064107

Regras para definir NOME DO FORMATO:
  1. Para valores de personagem, o primeiro caractere deve ser um cifrão ($) e uma letra ou sublinhado como o segundo caractere. Para valores numéricos, o nome deve ter uma letra ou sublinhado como o primeiro caractere
  2. O nome não pode terminar com um número
  3. Não pode ser o nome de um formato SAS existente
  4. Não deve terminar com um ponto final no demonstrativo VALUE

Vamos resolver os problemas discutidos acima usando o formato PROC:

Problema 1 (e 2): Mostrar M e F como masculino e feminino.

Código:

Formato de processo;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mulher’;
Para correr;
Processar dados de impressão = vendas;
Formato de gênero $ Genderfmt. ;
Para correr;

Produção:

9_proc_format_sas-4009602de forma similar, nós podemos resolver isso para o problema 2. Defina a categoria A, B, C, D e E como Ultra, Super, Média, Low y Poor.

Problema 3: você deseja mostrar a frequência de Salesamount em três categorias ” = 12.000″

Código:

Formato Proc;
Valor Salegrp low-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alto = ‘> = 12000 ’;
Para correr;
Dados Proc Freq = Ventas;
Formato Salesamount Salegrp .;
Mesa Salesamount;
Para correr;

Produção:

10_proc_format_sas-6560974

Acima, Usei intervalos para definir o formato. Pode ser usado para valores numéricos e de caracteres.

As palavras-chave especiais usadas para definir os intervalos são: –

uma) Os intervalos podem ser vários valores separados por vírgulas.

eu) 'UMA', ‘B’, ‘C’
ii) 22, 44, 67

b) Os intervalos podem incluir ou excluir valores de limite, com base no uso de várias palavras-chave como:

eu) 24 – 45: Inclui valores de 24 uma 45 Incluindo 24 e 45.
ii) 24 <- 45: Inclui valores entre 24 uma 45 Incluindo 45 e excluindo 24.
iii) 24 – <45: Inclui valores entre 24 uma 45 Incluindo 24 e excluindo 45.
4) 24 <- <45: Inclui valores entre 24 uma 45 excluindo 24 e 45.

c) LOW refere-se ao número mínimo disponível, ALTO refere-se ao maior número disponível e OUTROS inclui todos os números não especificados. Outros também incluem valores ausentes se não forem especificados.

Alguns pontos importantes / aplicativos a serem considerados sobre PROC FORMAT

  • O Formato PROC retorna o valor original se não incluímos todos os valores de dados ao definir o formato.

11_proc_format_sas-6398919

  • Podemos criar vários formatos em uma única instrução PROC FORMAT, especificando vários valores no formato PROC

Código:

Formato de processo;
Valor Salegrp low-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alto = ‘> = 12000 ’;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mulher’;
Para correr;
Processar dados de impressão = vendas;
Formato Salesamount Salegrp. Gênero $ Genderfmt .;
Para correr;

Produção:

12_proc_format_sas-4219573

  • PAGO ROC FORMAT pode ser usado para criar junções de dados eficientes

No PROC FORMAT, nós temos uma escolha CNTLIN, que nos permite criar um formato a partir de um conjunto de dados em vez de uma instrução VALUE. Antes de usar esta opção, primeiro olhamos as diretrizes abaixo: –

uma) O conjunto de dados de entrada deve conter três variáveis ​​exigidas pelo PROC FORMAT: COMEÇAR, LABEL e FMTNAME.

b) Aqui, START é o campo-chave entre essas duas tabelas e deve ser único no conjunto de dados de entrada (conjunto de dados, estamos usando em CNTLIN opção).

c) A variável LABEL é o valor que queremos atribuir a outro conjunto de dados.

d) A variável FMTNAME é o nome do formato e deve ser passada entre aspas simples.

e) Depois de definir o formato, podemos usar a função put para criar uma variável no conjunto de dados com base no campo-chave e no formato que definimos.

Exemplo:

Digamos que queremos mapear o agente DOB do conjunto de dados Agent_DOB (Dados de amostra) para o conjunto de dados anterior13_proc_format_sas-7383015

Aqui, queremos criar um formato baseado em Agent_DOB e aplicá-lo a Vendas. E Agente_DOB, nós consideraríamos AGT_ID (campo chave, entre os dois conjuntos de dados) como START, DOB como rótulo e FMTNAME = '$ AGENT'. Agora olhe para as declarações (a seguir).

Data Agent_DOB_Fmt;
Renomear AGT_ID = START;
Definir Agent_DOB;
Rótulo = DOB;
FMTNAME = ‘$ AGENT’;
Para correr;
Formato de processo CNTLIN = Agent_DOB_Fmt;
Para correr;

14_proc_format_sas-9892599

O código acima gerou um formato usando o conjunto de dados Agent_DOB_Fmt e então, para fundi-lo com o conjunto de dados SALES, etapas de dados foram escritas (a seguir).

Vendas de dados_DOB;
Definir vendas;
Date_birth = Colocar (Eight_ID, $ Agente.);
Para correr;

15_proc_format_sas-4787747

Limitação do PROC FORMAT como uma fusão

Este é o melhor método quando queremos mesclar uma variável de outro conjunto de dados, mas se quisermos adicionar cinco ou múltiplas variáveis, então temos que repetir a instrução PROC FORMAT tantas vezes junto com a função múltipla PUT na passagem de dados. Então, Eu prefiro usar MERGE ou PROC SQL nesses casos.

  • Podemos salvar o formato SAS definido pelo usuário para uso futuro.

Todos os formatos SAS são armazenados em um catálogo (coleção de formatos). Quando criamos um formato, está armazenado no catálogo. Se não especificarmos o catálogo, SAS armazena os formatos na biblioteca WORK em um catálogo chamado FORMATS. Como outros conjuntos de dados na biblioteca WORK, também são removidos no final da sessão.

Agora, para salvar formatos definidos pelo usuário, precisamos especificar onde armazenar o catálogo e como chamá-lo. Isso pode ser conseguido armazenando formatos em uma biblioteca diferente de WORK.

Paso 1 Em primeiro lugar, temos que definir uma biblioteca (aqui estou usando SAS University edition)

Sintaxe: – LIBNAME Library_Name “Caminho”
LIBNAME STATDATA “/ carpetas / miscarpetas / ECSTAT0 ”;

Step-2 Use a opção de biblioteca no formato PROC e forneça um nome de biblioteca com o nome do arquivo de formato. O nome do arquivo deve ser um nome de conjunto de dados SAS válido.

Sintaxe: – PROC FORMAT LIBRARY = Library_Name.MYFILENAME;
Biblioteca de formatos de processo = STATDATA.Gender_Fmt;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mulher’;
Para correr;

Acima do program criou um arquivo chamado Gender_Fmt.sas7bcat no local do seu diretório.

Agora, sempre que quisermos usar um formato armazenado, temos que dizer ao SAS para procurar formatos nesse arquivo de catálogo. Isso é feito com o fmtsearch opção. Então, antes de usar, precisamos escrever uma declaração.

Sintaxe: – Opções fmtsearch = (Library_Name.MYFILENAME)
Opções fmtsearch = (STATDATA.Gender_Fmt); / * Depois disso, podemos usar Gender_Fmt * /
Proc Print data = Ventas;
Formato de gênero $ Genderfmt .;
Para correr;

O formato de imagem SAS cria modelos nos quais definimos como os números são exibidos. Com o uso de FORMATO DE IMAGEM, podemos superar vários problemas de exibição de números, como: –

1. Colocando decimais e vírgulas

2. Incorpore caracteres com números

3. Prefixos

Exemplo 1: – Quero mostrar o valor das vendas que termina com um sinal de% e precedido por um sinal $.

Formato de processo;
Imagen New_fmt low-High = ‘000000%’ (Prefixo = ‘$’);

Para correr;
Processar dados de impressão = vendas;
Salesamount New_fmt format .;
Para correr;

Produção:

16_proc_format_sas-4904837

Exemplo 2: – Digamos, Eu tenho um número de telefone para 10 dígitos e quero exibi-los como 123-3456-789.

Telefone de dados;
Contato de entrada;
linhas de dados;
1111111111
222222222
3333333333
;
Para correr;
Formato de processo;
Imagem tele baixa-alta = ‘000-0000-000 ′;
Para correr;
Proc print data = Telefone;
Formato de Tele Contact .;
Para correr;

17_proc_format_sas-2596746

Notas finais: –

Neste artigo, discutimos vários métodos para exibir o formato de valores de dados usando formatos integrados e definidos pelo usuário. Também analisamos várias técnicas para definir formatos como intervalos, imagens, lidar com valores ausentes e valores incompatíveis usando OUTROS. Também discutimos a técnica de fusão eficiente usando PROC FORMAT. Isso deve ser tudo que você precisa para ser um profissional com formatos SAS.

Não cobrimos no formato ao ler um conjunto de dados não padrão. Falaremos sobre isso em um de nossos próximos posts..

Espero que este artigo tenha sido útil para você? Simplificamos este tópico e tentamos apresentá-lo de uma forma muito simples e lúcida. Se precisar de mais ajuda com o formato SAS, sinta-se à vontade para fazer suas perguntas através dos comentários abaixo.

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.