114
Universidade Estadual de Campinas SAS Programação I Ricardo Almeida de Mendonça Küsel Versão: Março/2008 Centro Nacional de Processamento de Alto Desempenho - SP

Apostila Sas II

Embed Size (px)

DESCRIPTION

programa de estatística

Citation preview

Page 1: Apostila Sas II

Universidade Estadual de Campinas

SAS Programação I

Ricardo Almeida de Mendonça Küsel

Versão: Março/2008

Centro Nacional de Processamento de Alto Desempenho - SP

Page 2: Apostila Sas II

2

CONTEÚDO

1 - HISTÓRICO pag.04

2 - CURIOSIDADES pag.04

3 - DEFINIÇÃO BÁSICA pag.05

4 - COMERCIALIZAÇÃO pag.06

4.1 - Módulos SAS pag.06 4.2 - Solução de Negócios pag.07

5 - CONCEITOS BÁSICOS pag.08

6 - ARQUIVOS SAS pag.09

7 - ESTRUTURA DOS ARQUIVOS SAS pag.10

8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS pag.11

9 - SINTAXE DOS COMANDOS pag.12

10 - EXECUÇÃO pag.13

10.1 - Modo Interativo (Ambiente WINDOWS) pag.13 10.2 - Modo Não Interativo (Ambiente de COMANDOS) pag.20

11 - ESTRUTURA DATA STEP pag.21

11.1 - Introdução pag.21 11.2 - Comando LIBNAME pag.23 11.3 - Comando DATA pag.24 11.4 - Comando INFILE pag.25 11.5 - Comando SET pag.26 11.6 - Comando INPUT pag.27 11.6.1 - INPUT COLUNADO pag.28 11.6.2 - INPUT FORMATADO pag.29 11.6.3 - Descrição de um Campo Data pag.30 11.6.4 - Controles Especiais do Comando INPUT pag.32 11.6.5 - Detalhes do Comando INPUT pag.33

12 – ESTRUTURA PROC STEP pag.34

12.1 - Introdução pag.34 12.1.1 - Comando VAR pag.35 12.1.2 - Comando BY pag.35 12.1.3 - Comando TITLE pag.36 12.1.4 - Comando FOOTNOTE pag.36 12.2 - Procedimento PRINT pag.37 12.3 - Procedimento SORT pag.39

13 - ARQUIVO DE MENSAGENS - "SAS Log" pag.41

1º LABORATÓRIO pag.44 2º LABORATÓRIO pag.45

14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS pag.46

14.1 - Comando de Atribuição (=) pag.46 14.2 - Comando RETAIN pag.48 14.3 - Comando IF-THEN/ELSE pag.49 14.4 - Comando WHERE pag.52 14.5 - Comando DO/END pag.53 14.6 - Comando LENGTH pag.54 14.7 - Comando DO/END Iterativo pag.55

Page 3: Apostila Sas II

3

14.8 - Comando DO/WHILE pag.56 14.9 - Comando DO/UNTIL pag.57 14.10 - Comandos DROP e KEEP pag.58 14.11 - Opções de Arquivos SAS pag.59 14.12 - Comando DELETE pag.60 14.13 - Comando OUTPUT pag.61 3º LABORATÓRIO pag.63

15 - FUNÇÕES DO SAS pag.66

15.1 - Introdução pag.66 15.2 - Funções de Tratamento de Caractere pag.67 15.2.1 - Função UPCASE pag.67 15.2.2 - Função LOWCASE pag.67 15.2.3 - Função SUBSTR pag.68 15.2.4 - Função COMPRESS pag.69 15.2.5 - Função LENGTH pag.69 15.2.6 - Função SCAN pag.71 15.2.7 - Função INDEX pag.72 15.3 - Funções de Truncamento pag.75 15.3.1 - Função INT pag.75 15.3.2 - Função ROUND pag.75 15.4 - Funções Estatísticas Descritivas pag.77 15.4.1 - Função SUM pag.77 15.4.2 - Função MEAN pag.77 15.5 - Funções de Tratamento de Data e Hora pag.79 15.5.1 - Função MDY pag.79 15.5.2 - Funções: DAY, MONTH, YEAR pag.79 15.5.3 - Função TODAY pag.80 15.5.4 - Função TIME pag.80 15.5.5 - Funções: HOUR, MINUTE, SECOND pag.80 15.6 - Funções Macro pag.81 15.6.1 - Função %SYSFUNC pag.81 4º LABORATÓRIO pag.83

16 - COMANDOS DE CONFIGURAÇÃO pag.84

16.2 - Comando LABEL pag.86 16.3 - Comando FORMAT pag.87 16.4 - Comando ODS pag.88

17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS pag.90

17.1 - Procedimento MEANS pag.90 17.2 - Procedimento FREQ pag.93 17.3 - Procedimento TABULATE pag.98 5º LABORATÓRIO pag.103

18 - RECURSO DE FORMATAÇÃO ESPECIAL pag.105

18.1 - Procedimento FORMAT pag.105 6º LABORATÓRIO pag.107

19 - COMBINAÇÃO DE ARQUIVOS SAS pag.109

19.1 - Concatenação pag.109 7º LABORATÓRIO pag.113

20 - BIBLIOGRAFIA pag.114

Page 4: Apostila Sas II

4

1 - HISTÓRICO

Década de 60;

North Caroline University; Censo Agro-pecuário Norte-americano;

Conjunto de sub-rotinas (FORTRAN, IBM/370);

SAS Institue Inc. (1975); 2 - CURIOSIDADES 40.000 Instalações, em 110 paises; 96 das 100 maiores empresas do mundo utilizam SAS. (Fortune 500 List - 2005);

SAS é a maior empresa de software do mundo de capital privado;

Idiomas: Chinês, Francês, Alemão, Hebreu, Italiano, Japonês,

Russo, Espanhol, Polonês, Hungaro, Sueco, Coreano, etc.

Page 5: Apostila Sas II

5

3 - DEFINIÇÃO BÁSICA

O SAS é um software integrado para análise de dados, que consiste de vários produtos que permitem:

- Recuperação de dados;

- Gerenciamento de arquivos;

- Análise estatística;

- Acesso a Banco de Dados (ORACLE, DB2, etc);

- Geração de gráficos;

- Geração de relatórios;

- Geração de aplicativos;

- Soluções de negócios (Análise de Risco,

Gerenciamento de Campanha, “Data Mining”);

É um software de grande portabilidade, podendo operar em diversos ambientes computacionais:

- Mainframes IBM ( CMS, MVS, OS, OS/390, Z/OS )

- DIGITAL ( VMS, OpenVMS )

- Micros PC ( DOS, Windows, OS/2, Apple )

- UNIX ( Solaris, AIX, HP-UX, Irix, Linux )

Page 6: Apostila Sas II

6

4 - COMERCIALIZAÇÃO 4.1 - Módulos do SAS

SAS/BASE Módulo básico, obrigatório em toda instalação;

SAS/STAT Módulo estatístico;

SAS/GRAPH Módulo gráfico ( Histogramas, plots, ... );

SAS/OR Módulo de análise e pesquisa operacional

(Programação linear, Análise de Caminho Crítico);

SAS/QC Módulo para análise de controle de

qualidade;

SAS/ETS Módulo de econometria (Séries Temporais, Modelagem de Equações Simultâneas);

SAS/IML Módulo para análise e operação de matrizes;

SAS/ACCESS Módulo para acesso aos diversos tipos de

Banco de Dados;

SAS/CONNECT Módulo para conexão entre ambientes operacionais heterogêneos;

SAS/AF Módulo para desenvolvimento de aplicações;

SAS/FSP Módulo para facilitar o acesso a arquivos com

programação de telas;

Page 7: Apostila Sas II

7

4.2 - Solução de Negócios

Customer Relationship Management http://www.sas.com/offices/latinamerica/brazil/solutions/crm/index.html

Financial Management http://www.sas.com/offices/latinamerica/brazil/solutions/financial/index.html

Human Capital Management http://www.sas.com/offices/latinamerica/brazil/solutions/hcm.html

Information Technology Management http://www.sas.com/offices/latinamerica/brazil/solutions/itmgmt/index.html

Patent Discovery & Analysis http://www.sas.com/offices/latinamerica/brazil/solutions/patent/index.html

Performance Management http://www.sas.com/offices/latinamerica/brazil/solutions/spm/index.html

Quality Performance http://www.sas.com/offices/latinamerica/brazil/solutions/quality/index.html

Risk Management http://www.sas.com/offices/latinamerica/brazil/solutions/risk/index.html

Supplier Relationship Management http://www.sas.com/offices/latinamerica/brazil/solutions/srm/index.html

Supply Chain Management http://www.sas.com/offices/latinamerica/brazil/solutions/supplychain/index.html

Page 8: Apostila Sas II

8

5 - CONCEITOS BÁSICOS

DATA SET Arquivo de dados com estrutura SAS;

OBSERVAÇÃO Registro de um arquivo de dados SAS;

JOB SAS Arquivo com um programa SAS (É um conjunto de DATA Step's e PROC Step's);

DATA STEP Divisão lógica de um programa SAS, no qual se cria e altera um, ou vários arquivos SAS ( Data Set's );

PROC STEP Divisão lógica de um programa SAS, no qual se analisa e manipula os dados contidos num arquivo SAS (Data Set's);

OBS: A funcionalidade do Sistema SAS foi construída em

torno de quatro idéias básicas no tratamento de dados:

Acessar dados; Administrar dados; Analisar dados; Apresentar dados;

Page 9: Apostila Sas II

9

6 - ARQUIVOS SAS

Todos os dados devem estar armazenados em arquivos com estrutura SAS (DATA Set's), para serem analisados pelos procedimentos do SAS ( PROC's ).

Os arquivos SAS podem ser temporários (biblioteca definida pelo SAS - WORK) ou permanentes (bibliotecas definidas pelos usuários).

Em um único programa SAS (“Job SAS”), vários arquivos podem ser abertos e analisados.

Os arquivos SAS, depois de criados, podem ser analisados pelos procedimentos SAS.

DADO

BRUTO

DADO

SAS

DATA STEP

Page 10: Apostila Sas II

10

7 - ESTRUTURA DOS ARQUIVOS SAS

O arquivo SAS é um conjunto de dados arrumados num formato de tabela.

NOME SEXO IDADE ALTURA

As colunas nas tabelas são chamadas de variáveis:

- Variáveis correspondem aos campos de dados; - Cada variável recebe um nome; - Para o SAS, só existem dois tipos de variáveis:

caractere (até 32K caracteres - 32KBytes) numérica (Representação IEEE - 8Bytes)

As linhas na tabela são chamadas de observações (ou registros). Não existe limite para o número de observações.

Um Arquivo SAS é dividido em duas partes: Descritora Contém a descrição do arquivo: Tamanho do arquivo,

número de registros, nome, tipo, tamanho e formato de variáveis, etc;

Dados Contém os dados do arquivo.

CARLOS M 12 1.70 GILBERTO M 25 1.65 RICARDO M 30 1.80 . . . . . . . . . . . . ALICE F 28 1.68 MARCIA F 22 1.75

Page 11: Apostila Sas II

11

8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS

Todos os nomes de arquivos e variáveis deverão seguir as seguintes regras:

- Possuir de 1 à 32 caracteres; - Começar com letra (A-Z);

- Pode continuar com números, letras ou travessões.

Ex.1:

DATA EXEMPLO1 ; INFILE “C:\TEMP\CADASTRO.TXT”; INPUT PRIMEIRO_NOME $ 1-8 SEXO $ 10 IDADE 13-14 ALTURA 16-19 ; RUN;

Page 12: Apostila Sas II

12

9 - SÍNTAXE DOS COMANDOS

Todo comando SAS começa com uma palavra-chave (identificação), e termina com o ponto e virgula (;).

- Os comandos podem começar e terminar em qualquer parte da linha;

- Um comando pode se estender por diversas linhas;

- Vários comandos podem ficar na mesma linha. Ex.2:

DATA EXEMPLO1 ; INFILE “C:\TEMP\DADOS.DAT” ; INPUT NOME $ 1-8 SEXO $

IDADE $ 13-14 ALTURA 16-19 ;

RUN;

PROC PRINT DATA=EXEMPLO1 ; RUN;

PROC FREQ DATA=EXEMPLO1 ; TABLES IDADE*ALTURA ; RUN ;

Page 13: Apostila Sas II

13

10 - EXECUÇÃO Um programa SAS pode ser executado de três maneiras diferentes: - Modo interativo (Ambiente Windows); - Modo não interativo; - Modo “batch”. 10.1 - Modo Interativo (Ambiente WINDOWS)

Localize o ícone do SAS na janela windows ou, ative o ambiente SAS, seguindo o roteiro abaixo:

Iniciar ==> Programas ==> SAS ==> SAS 9.1 (English)

Page 14: Apostila Sas II

14

Page 15: Apostila Sas II

15

JANELA DE OPÇÕES DE CONFIGURAÇÃO Tools ==> Options ==> System...

Page 16: Apostila Sas II

16

Page 17: Apostila Sas II

17

OPÇÕES DE CONFIGURAÇÃO DO EDITOR Tools ==> Options ==> Enhanced Editor...

Page 18: Apostila Sas II

18

Page 19: Apostila Sas II

19

CONFIGURAÇÃO DE TECLADO Tools ==> Options ==> Keys

Page 20: Apostila Sas II

20

10.2 - Modo Não Interativo (Ambiente de COMANDOS)

É uma maneira simples e rápida de execução de um programa SAS. O programa pode ser editado em qualquer editor, mas deverá ser e salvo em modo texto. Para executá-lo, basta ativar a janela de comandos do windows (“Executar ou cmd”):

Iniciar ==> Executar...

No diretório do programa SAS, serão gerados dois arquivos com o mesmo nome do programa:

<programa>.lst Possui os resultados do programa; <programa>.log Possui mensagens da execução do

programa.

OBS: Sempre analise o arquivo com extensão log. Se não for criado o arquivo com extensão lst, com certeza existirão erros no programa, que poderão ser identificados no arquivo log.

Page 21: Apostila Sas II

21

11 - ESTRUTURA DATA STEP 11.1 - Introdução

- É a seção de um programa SAS, aonde se organizam e administram os dados, utilizando comandos de programação do SAS/BASE e alguma lógica de processamento.

- A maioria dos comandos utilizados em DATA Step, só existem e só podem ser executados nessa seção;

- Os comandos seguem uma hierarquia, ou seja, a execução de um determinado comando, pode depender da execução do comando anterior (lógica de processamento);

- Os arquivos processados em um DATA Step, normalmente, são processados sequencialmente, ou seja, registro após registro;

- Internamente, o DATA Step representa um “loop”, que repete todos os comandos a cada leitura de um novo registro do arquivo de entrada até encontrar o último registro, finalizando o DATA Step e seguindo para o próximo Step;

- A execução de um programa SAS obedece a duas fases internas: Compilação e Execução;

- Os comandos em um DATA Step, podem ser divididos em: Comandos de Declaração -Funcionalidade: durante a compilação; Comandos de Execução -Funcionalidade: durante a execução.

OBS: Comandos de declaração não possuem nenhuma ação durante a execução.

Page 22: Apostila Sas II

22

Fluxo de Execução

Abrir arquivo

para gravar

Abrir arquivo

para leitura

processa registro

Ultimo registro

Inicio do DATA Step

Salvar registro no

arquivo para gravaçao

SIM

Fim do DATA Step

Ler novo registro

NAO

Page 23: Apostila Sas II

23

11.2 - Comando LIBNAME - Tipo: Comando de declaração; - Uso: Livre;

- Comando opcional de configuração do processamento, que define uma ou mais áreas de trabalho e armazenamento (diretórios), para os arquivos SAS (Data Set's);

- Define o primeiro nível de um nome de arquivo, a biblioteca SAS;

[biblioteca].<nome do arquivo>

- O comando LIBNAME, normalmente, é colocado antes do comando DATA, e só será necessário ser executado uma única vez durante uma sessão SAS WINDOWS.

LIBNAME <biblioteca> "<diretório>" ;

Biblioteca Palavra de no mínimo 1 e no máximo 8 caracteres,

que identifica o primeiro nível em um nome de arquivo.

diretório Nome de um diretório que já exista no seu

ambiente.

OBS: O SAS define uma biblioteca padrão, temporária, de nome work.

Ex.3:

LIBNAME IN "C:\ALUNO" ; DATA IN.EXEMPLO ;

INFILE "A:\CADASTRO" ; INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ;

PROC PRINT DATA=IN.EXEMPLO NOOBS ;

VAR NOME ENDERECO ; RUN ;

Page 24: Apostila Sas II

24

11.3 - Comando DATA - Tipo: Comando de declaração; - Uso: Data Step;

- Comando que sempre inicia um DATA Step;

- Abre um novo arquivo DATA Set, vazio, em uma biblioteca SAS.

DATA <bib>.<nome do arquivo> ; Ex.4:

OBS: Não é obrigatório especificar a biblioteca, neste caso, o SAS irá utilizar a biblioteca padrão, também chamada de biblioteca temporária (WORK ).

DATA ENDERECO ; DATA ARQ1 ARQ2 ARQ3 ; DATA ENT.CADASTRO ; DATA ; DATA _NULL_;

Page 25: Apostila Sas II

25

11.4 - Comando INFILE - Tipo: Comando de execução; - Uso: Data Step;

- Comando que identifica e abre um arquivo externo de dados, somente para leitura (não é um arquivo no formato do SAS);

- Normalmente é um arquivo de dados no formato texto (somente texto);

- Este comando deve ser posicionado após o comando DATA e antes do comando INPUT.

INFILE "<arquivo de dados>" [opções] ;

Opções: LRECL= Tamanho do registro;

PAD Completa de brancos os registros; MISSOVER Previne o SAS de lê um novo registro

para completar os dados de uma variável;

Ex.5:

INFILE "C:\DADOS\ARQ1.TXT" ; INFILE "A:\CADASTRO.PRN" ; INFILE 'C:\SAS\CAD.DAT' LRECL=380 PAD ;

DATA EXEMPLO ; INFILE 'C:\TESTE\DADOS.TXT' MISSOVER;

. . .

. . .

. . .

Page 26: Apostila Sas II

26

11.5 - Comando SET - Tipo: Comando de execução; - Uso: Data Step;

- Este comando abre um arquivo de dados DATA Set (formato SAS), somente para leitura, e que já exista em alguma biblioteca SAS;

- O comando deve ser posicionado, na maioria das vezes, no início de um Data Step, para permitir ao compilador ler a estrutura do arquivo especificado e armazená-la na memória.

SET <bib>.<nome do arquivo>; Ex.6:

OBS: Não é obrigatório especificar a biblioteca, neste caso, o SAS irá utilizar a biblioteca padrão, também chamada de biblioteca temporária (WORK ).

DATA EXEMPLO ; SET CADASTRO ; . . .

Page 27: Apostila Sas II

27

11.6 - Comando INPUT

- Tipo: Comando de execução; - Uso: Data Step;

- O comando INPUT serve para descrever ao SAS como estão armazenados e organizados os dados em arquivos textos que foram especificados pelo comando INFILE.

- Todo arquivo aberto pelo comando INFILE, sempre necessitará de um comando INPUT para ler o seu conteúdo;

- O comando INPUT irá ler registro a registro (leitura sequêncial) até encontrar "fim de arquivo (EOF)", e irá atribuir nomes (Variáveis) para cada campo de um registro;

- Existem três tipos básicos de comando INPUT:

- INPUT LISTADO

- INPUT COLUNADO

- INPUT FORMATADO

Page 28: Apostila Sas II

28

11.6.1 - INPUT COLUNADO

- Lê as variáveis especificando a sua posição na linha de dados (posição inicial e posição final). As variáveis devem estar alinhadas e colunadas.

INPUT <variável> [$] <início>-<fim> [.decimal] ;

variável Nome da variável, que será associada a uma coluna de

dados.

$ Caractere opcional que indica que a variável só irá conter dados alfanuméricos. Sem o $, significa que a variável será numérica.

início Valor que indica a posição inicial da variável na linha de

dados.

fim Valor que indica a posição final da variável na linha de dados.

.decimal Valor opcional, indica o número de posições decimais de

uma variável numérica.

Ex.7: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 C A R L O S M 1 8 1 7 0 6 8 . 0

C A R L A F 2 6 1 7 8 7 2 . 0

S I L V I A F 2 1 1 6 5 6 0 . 5

M A R C I O M 3 2 1 8 2 8 5 . 4

DATA FICHA ; INFILE “A:\CADASTRO.TXT”; INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ; RUN;

Page 29: Apostila Sas II

29

11.6.2 - INPUT FORMATADO

- Lê as variáveis especificando o tamanho e, opcionalmente, o formato do campo na linha de dados.

- É o tipo de INPUT mais poderoso e complexo do SAS.

INPUT <variável> [$] <w.d> ou [fomatow.d] ;

variável Nome da variável, que será associada a uma coluna de

dados.

$ Caractere opcional que indica que a variável só irá conter dados alfanuméricos. Sem o $, significa que a variável será numérica.

w. Valor que indica o tamanho de um campo na linha de

dados.

w.d Valor que indica o tamanho de um campo numérico com casas decimais.

formatow.d Campo opcional. Nome de um formato especial de leitura

de dados:

BINARYw.d Lê campo numérico no formato binário e o converte para decimal;

COMMAw.d Lê campo numérico com vírgulas e as retira;

Ew.d Lê campo numérico com notação científica;

HEXw. Lê campo numérico em hexadecimal; DDMMYYw. Lê campo no formato padrão de datas

dd/mm/yyyy.

Page 30: Apostila Sas II

30

11.6.3 - Descrição de um Campo Data - Campos que representam datas necessitam que sejam

identificados pelo SAS através de um formato de leitura e armazenados como numéricos;

- O valor numérico armazenado representa o número de dias em relação a uma data base SAS.

- É um campo que obrigatoriamente deve ser lido com um formato de leitura para identificar a formatação da data.

Formatos: DATE9. ==> 01JAN1960 DDMMYY10. ==> 01/01/1960 Formato padrão de uma constante data no SAS: "ddmmyyyy"d "01JAN1960"d

Page 31: Apostila Sas II

31

Ex.8: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

C A R L O S M 1 8 1 7 0 6 8 . 0

C A R L A F 2 6 1 7 8 7 2 . 0

Ex.9:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

R J 2 0 4 5 6 3 0 0 6 , 7 3 9 , 9 9 2 8 8 F 1 . 2 E 5

S P 1 1 5 0 0 0 0 0 9 , 4 6 4 , 2 6 5 6 C C 1 2 5 E 5

DATA EXEMPLO2 ; INFILE “A:\NUMEROS.PRN”;

INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ; RUN; PROC PRINT ; RUN ;

SAS

OBS UF CEP POP VALOR1 VALOR2 1 RJ 20456300 6739992 2191 120000

2 SP 11500000 9464265 1740 12500000

DATA FICHA ; INFILE “A:\CADASTRO.TXT”; INPUT NOME $ 8. SEXO $ 1. IDADE 3. ALTURA 4.2 PESO 4. ; RUN;

Page 32: Apostila Sas II

32

11.6.4 - Controles Especiais do Comando INPUT

Indicador de COLUNA ( @ , + )

@n Move a leitura para a coluna n ; +n Move a leitura n colunas ;

Indicador de LINHA ( # , / )

#n Move a leitura para a linha n ; / Avança a leitura em uma linha;

Ex.10:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 1 1 1 1 B B B B C C C C

D D D D

E E E E F F

2 2 2 2 2 b b b b c c c c

d d d d

e e e e f f

DATA POSICAO ; INFILE "C:\SAS\POS.DAT" ; INPUT A $ @10 B $ 4. +3 C $ 4. / D $ 1-4 / E $ @8 F $ #2 D1 $ 4. ; RUN; PROC PRINT ; RUN ;

The SAS System

OBS A B C D E F D1

1 11111 BBBB CCCC DDDD EEEE FF DDDD 2 22222 bbbb cccc dddd eeee ff dddd

Page 33: Apostila Sas II

33

11.6.5 - Detalhes do Comando INPUT - Em campos numéricos, não são permitidos "brancos" entre os números;

- Sinal (+ - ), ponto decimal (.) e notação científica para expoente ( E ), são permitidos em campos numéricos;

- Campos tipo caractere podem ter, no máximo, 32K de caracteres;

- São permitidos "brancos", em qualquer posição, em campos do tipo caractere;

- Campos em branco (sem informação) são considerados como "missing

value" (valor perdido).

- Os campos de um registro de dados podem ser lidos em qualquer ordem.

- Campos ou partes de um campo podem ser relidos.

- Dados caracteres serão armazenados, alinhados pela esquerda, e os dados numéricos, alinhados pela direita;

- Todos os tipos de INPUT, podem ser combinados num único comando INPUT;

Ex.11: Detalhes de leitura

INPUT PESO 17-20 NOME $ 1-8 IDADE 11-12 SEXO $ 9 ;

INPUT NOME $ 1-8 PREFIXO $ 1-3 ENDERECO $ 10-40 APT $ 38-40 ;

INPUT JAN 3. FEV 3. MAR 3. ABR 3. MAI 3. JUN 3. ; INPUT (JAN FEV MAR ABR MAI JUN) (3.) ; INPUT (MES1 MES2 MES3 MES4 MES5 MES6) (3.) ; INPUT (MES1-MES6) (3.) ;

Page 34: Apostila Sas II

34

12 - ESTRUTURA PROC Step 12.1 - Introdução

- É a seção de um programa SAS aonde se analisa os dados de um arquivo SAS, utilizando-se procedimentos específicos para cada tipo de análise.

- A maioria dos procedimentos SAS, geram relatórios técnicos;

- Todos os procedimentos iniciam com a palavra PROC seguida do nome específico do procedimento ou rotina desejada;

- Os comandos em uma PROC não seguem uma hierarquia, ou seja, podem ser colocados em qualquer ordem dentro da PROC;

PROC <rotina> [opções] ;

[comando] ; [comando] ;

RUN ;

rotina Palavra-chave que identifica o procedimento a ser executado.

opções Parâmetros opcionais de configuração para

execução do procedimento.

comando Comandos de detalhamento na execução do procedimento.

RUN Comando para execução do procedimento SAS.

Necessário no último procedimento do programa SAS.

Page 35: Apostila Sas II

35

12.1.1 - Comando VAR - Tipo: Comando de declaração; - Uso: Proc Step

- Comando comum à maioria das PROCS. Determina as variáveis do arquivo SAS que serão processadas pelo procedimento.

VAR <variável1> <variável2> ...<variáveln> ;

12.1.2 - Comando BY - Tipo: Comando de declaração; - Uso: Data Step e Proc Step;

- Determina uma ou mais variáveis que permitirão o processamento em grupos;

BY <variável1> <variável2> ...<variáveln> ;

OBS: Este comando exige que o arquivo esteja ordenado ou indexado pelas variáveis especificadas.

Page 36: Apostila Sas II

36

12.1.3 - Comando TITLE

- Tipo: Comando de declaração; - Uso: Livre;

- Pode ser codificado em qualquer parte do programa. Determina de 1 até 10 títulos para o relatório a ser gerado pelo procedimento.

TITLE "<cabeçalho>" ;

TITLE1 "<cabeçalho>" ; . . . TITLE10 "<cabeçalho>" ;

OBS: Um título permanece ativo até que seja modificado, ou eliminado com o comando: TITLE;

12.1.4 - Comando FOOTNOTE

- Tipo: Comando de declaração; - Uso: Livre;

- Pode ser codificado em qualquer parte do programa. Determina de 1 até 10 rodapés para o relatório a ser gerado pelo procedimento.

FOOTNOTE "<rodapé>" ; FOOTNOTE1 "<rodapé>" ; . . . FOOTNOTE10 "<rodapé>" ;

OBS: Um rodapé permanece ativo até que seja modificado, ou eliminado com o comando: FOOTNOTE;

Page 37: Apostila Sas II

37

12.2 - Procedimento PRINT

- Procedimento do SAS que imprime, na saída padrão, os dados contidos nos arquivos SAS;

- A saída padrão é, normalmente, a janela OUTPUT.

PROC PRINT [opções] ; VAR <lista de variáveis> ; BY <lista de variáveis> ; SUM <lista de variáveis> ;

opções DATA= Nome do arquivo SAS;

DOUBLE Espacejamento duplo; NOOBS Suprime a coluna com o número de cada

observação do arquivo; UNIFORM Formata todas as paginas uniformemente; LABEL Imprime os "label's" das variáveis;

SPLIT= Determina um caractere do label que irá indicar a quebra da descrição;

VAR Determina uma lista de variáveis que serão impressas;

BY Determina a quebra ou agrupamento do

relatório, por uma ou mais variáveis;

SUM Determina uma ou mais variáveis numéricas que serão totalizadas;

Page 38: Apostila Sas II

38

Ex.12:

Ex.13:

TITLE "Relatório de Fucionarios" ; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; Relatório de Funcionarios NOME FUNCAO ANTUNES ANALISTA TERESA ANALISTA CLAUDIA PROG MARCOS PROG JULIO OPER

TITLE "Relatório de Salários" ; FOOTNOTE " FONTE: DH " ; PROC PRINT DATA=EXEMPLO1 ;

VAR NOME FUNCAO SALARIO ; SUM SALARIO ;

RUN ; Relatório de Salários OBS NOME FUNCAO SALARIO 1 ANTUNES ANALISTA 1800 2 TERESA ANALISTA 1650 3 CLAUDIA PROG 1200 4 MARCOS PROG 1200 5 JULIO OPER 850 ======= 6700 FONTE: DH

Page 39: Apostila Sas II

39

12.3 - Procedimento SORT

- Procedimento do SAS que reordena os registros dos arquivos por uma ou mais variáveis, em ordem ascendente ou descendente;

- Não possui saída impressa;

- Pode gerar arquivo ordenado.

PROC SORT [opções] ; BY <lista de variáveis> ;

opções DATA= Nome do arquivo SAS para ser ordenado;

OUT= Nome do arquivo SAS, aonde serão armazenado os dados ordenados. Se não for utilizada essa opção, a ordenação será feita em cima do arquivo original;

NODUPKEY Opção que elimina os registros com chaves

duplicadas; DUPOUT= Nome para arquivo com os registros duplicados;

BY Determina uma ou várias variáveis como chaves de ordenação;

OBS: A ordenação sempre é feita na ordem ascendente. Para ordenar na ordem descendente é necessário colocar o parâmetro descending, antes da variável a ser ordenada no comando BY.

Page 40: Apostila Sas II

40

Ex.14:

PROC SORT DATA=EXEMPLO OUT=ORDENA ; BY FUNCAO ; RUN ; PROC PRINT DATA=ORDENA NOOBS ; BY FUNCAO ; VAR NOME SALARIO ; SUM SALARIO ; RUN ; The SAS System ----------------------------- FUNCAO=ANALISTA ----------------------------- NOME SALARIO ANTUNES 1800 TERESA 1650 ------- FUNCAO 3450 ------------------------------- FUNCAO=OPER ------------------------------- NOME SALARIO JULIO 850 ------------------------------- FUNCAO=PROG ------------------------------- NOME SALARIO CLAUDIA 1200 MARCOS 1200 ------- FUNCAO 2400 ==== 6700

Page 41: Apostila Sas II

41

13 - ARQUIVO DE MENSAGENS - "SAS Log"

- Ao se executar um programa SAS, é gerado um relatório de mensagens com notificações e erros da execução do programa (janela LOG).

- Muito útil, deve ser sempre analisado, principalmente quando não aparecer o relatório com os resultados na janela OUTPUT, ou quando esse relatório aparecer com problemas.

Ex.15:

DATA EXEMPLO1 ; INFILE "C:\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; SAS Log NOTE: Copyright(c) 1989 by SAS Institute Inc., Cary, NC USA. NOTE: SAS (r) Proprietary Software Release 8.2 Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS, Site 0004267003. 1 DATA EXEMPLO1 ; 2 INFILE "C:\DADOS.TXT" ; 3 INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ; NOTE: The infile "C:\DADOS.TXT" is: FILENAME=C:\DADOS.TXT, RECFM=V,LRECL=132 NOTE: 5 records were read from the infile "C:\DADOS.TXT". The minimum record length was 16. The maximum record length was 23. NOTE: The data set WORK.EXEMPLO1 has 5 observations and 4 variables. NOTE: The DATA statement used 2.68 seconds. 4 PROC PRINT DATA=EXEMPLO1 NOOBS ; 5 VAR NOME FUNCAO ; 6 RUN ; NOTE: The PROCEDURE PRINT used 0.55 seconds.

Page 42: Apostila Sas II

42

Ex.16:

DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT'; INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS VAR NOME FUNCAO ; RUN ; SAS Log 17 DATA EXEMPLO1 ; 18 INFILE 'C:\TEMP\LEITURA.DAT'; NOTE: SCL source line. 19 INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ; - 22 76 ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (. ERROR 76-322: Syntax error, statement will be ignored. 20 RUN; NOTE: The SAS System stopped processing this step because of errors. WARNING: The data set WORK.EXEMPLO1 may be incomplete. When this step was stopped there were 0 observations and 3 variables. WARNING: Data set WORK.EXEMPLO1 was not replaced because this step was stopped. NOTE: DATA statement used: real time 0.02 seconds cpu time 0.01 seconds 21 22 PROC PRINT DATA=EXEMPLO1 NOOBS NOTE: SCL source line. 23 VAR NOME FUNCAO ; --- ---- 22 202 ERROR 22-322: Syntax error, expecting one of the following: ;, DATA, DOUBLE, HEADING, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLIT, STYLE, UNIFORM, WIDTH. ERROR 202-322: The option or parameter is not recognized and will be ignored. 24 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used: real time 0.01 seconds cpu time 0.01 seconds

Page 43: Apostila Sas II

43

Ex.17:

DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT'; INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO SALARIO ; SUM SALARIO ; RUN ; SAS Log 58 DATA EXEMPLO1 ; 59 INFILE 'C:\TEMP\LEITURA.DAT'; 60 INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ; 61 RUN; NOTE: The infile 'C:\TEMP\LEITURA.DAT' is: File Name=C:\TEMP\LEITURA.DAT, RECFM=V,LRECL=256 NOTE: 5 records were read from the infile 'C:\TEMP\LEITURA.DAT'. The minimum record length was 16. The maximum record length was 23. NOTE: SAS went to a new line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXEMPLO1 has 4 observations and 4 variables. NOTE: DATA statement used: real time 0.02 seconds cpu time 0.01 seconds 62 63 PROC PRINT DATA=EXEMPLO1 NOOBS; 64 VAR NOME FUNCAO SALARIO ; ERROR: Variable FUNCAO not found. 65 SUM SALARIO; ERROR: Variable SALARIO in list does not match type prescribed for this list. 66 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used: real time 0.01 seconds cpu time 0.01 seconds

Page 44: Apostila Sas II

44

1º LABORATÓRIO Montar um programa SAS que leia um arquivo de dados externo (não SAS) e gere um arquivo no formato SAS (Data Set), permanente.

1- Criar um arquivo SAS, permanente, de nome CADASTRO, no diretório c:\curso\sas (Utilize os comandos LIBNAME e DATA );

2 - Abra o arquivo de dados externo de nome CADASTRO.DAT no diretório c:\curso\sas

(Utilize o comando INFILE ). O Tamanho do registro de dados é de 130 bytes;

3 - Leia os dados deste arquivo ( Utilize o comando INPUT, colunado ou formatado ). Sabendo-se que o conteúdo do arquivo está dividido em diversos campos na seguinte ordem:

Nome do Campo

Tipo do Campo

Tamanho do Campo

Decimais Posição Inicial

Detalhe

NOME Caractere 30 1

SEXO Caractere 1 31

IDADE Numérico 2 32

PESO Numérico 6 2 34

ALTURA Numérico 4 2 40

ANIVERSARIO Numérico 10 44 Campo formatado: Ex. 18/01/2005

ESTADO CIVIL Caractere 1 54

FILHOS Numérico 2 55

RG Caractere 15 57

CPF Caractere 11 72

EMPRESA Caractere 15 83

FUNCAO Caractere 12 98

ADMISSAO Numérico 9 110 Campo formatado: Ex 18JAN2005

SALARIO Numérico 12 2 119 Campo formatado: Ex. 3.548,25

4 - Releia parte do campo EMPRESA, na posição 89, defina a variável TIPO DE EMPRESA, com 9 caracteres;

5 - Gere um relatório com os resultados da leitura do arquivo. Leia com atenção as mensagens na janela LOG. Salve o seu programa!.

OBS: Salve os seus programas! Faça-o sempre, no diretório c:\curso\sas

Page 45: Apostila Sas II

45

2º LABORATÓRIO Manipular os procedimentos de impressão e ordenação. Utilizando o arquivo SAS gerado no laboratório anterior, monte programas SAS que:

1 - Gere um relatório: - com as variáveis: NOME, EMPRESA, FUNCAO e SALARIO;

- deverá ter espacejamento DUPLO; - não poderá aparecer a coluna com o número de registros ( OBS );

( Utilize o procedimento PRINT )

2 - Gere:

- um arquivo SAS permanente ordenado por EMPRESA; - um relatório com todos os dados, relacionados por EMPRESA;

(Utilize os procedimentos SORT e PRINT)

3 - Utilizando o arquivo ordenado do item anterior:

- gere um relatório por EMPRESA; - com os dados: NOME, FUNCAO e SALARIO; - faça um somatório da variável SALARIO; - coloque o título "Relatório de Salários por Empresa"; - coloque o rodapé "FONTE: Fundação Getúlio Vargas";

( Utilize o procedimento PRINT)

4 - Utilizando o arquivo SAS CADASTRO, gerado no laboratório anterior, crie um programa SAS que emita um relatório com as variáveis: NOME, FUNCAO e SALARIO, em ordem ascendente por EMPRESA e descendente por SALARIO.

(Utilize o procedimento SORT e PRINT)

5 - Utilizando o arquivo SAS CADASTRO, gere um relatório que:

- esteja ordenado por EMPRESA; - com as variáveis: NOME, EMPRESA e SALARIO; - tenha espacejamento DUPLO; - sem título algum;

- com o somatório da variável SALARIO;

Page 46: Apostila Sas II

46

14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS

14.1 - Comando de Atribuição (=) - Tipo: Comando de execução; - Uso: Data Step;

- Comando Caractere utilizado para criar novas variáveis e editar as já existentes em um Data Step.

<variável> = <expressão> ;

variável Nome com no máximo 32 caracteres. expressão Expressões do tipo:

- Operações aritméticas simples: + - * / **

x2=x ; Move valor; soma=x+y ; Adição; dif=x-y ; Subtração; dobro=x*2 ; Multiplicação; met=x/2 ; Divisão; cubo=x**3 ; Potenciação; y=-x ; Mudança de sinal;

- Constantes :

N=0 ; Constante numérica; SEXO="F" ; Constante caractere; - Concatenação de caracteres : || A=”PAULO” || “ANTUNES”; ==> A=”PAULOANTUNES” A=”PAULO” || “ ” || “ANTUNES”; ==> A=”PAULO ANTUNES” - Expressões complexas com prioridade de avaliação:

( ) Função ** * / + - =================>

A=X+Y+Z ;

A=X+Y*Z ; A=X/(Y/Z) ;

- Funções:

S=SQRT(X) ; A=INT(X) ; Z=ABS(SQRT(X)-2) ;

Page 47: Apostila Sas II

47

Ex.18:

LIBNAME ARQ "C:\SAS\TESTE" ; DATA ARQ.LUCROS ; INFILE “C:\DADOS\NUMEROS.TXT”;

INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12; VAL_DOL = 0.98 ; ANO = ANO + 1900 ; LUCRO = RECEITA - DESPESAS ; DOLLAR = ( RECEITA - DESPESAS ) / VAL_DOL ;

RUN; Arquivo: NUMEROS.TXT

01 02 03 04 05 06 07 08 09 10 11 12

9 4 5 6 5 0 1 0 5 0 9 5 6 2 8 0 1 1 4 0

9 6 8 4 5 0 2 4 5 0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ;

TITLE "Analise Contábil" ; VAR ANO RECEITA DESPESAS LUCRO DOLLAR ; SUM RECEITA DESPESAS LUCRO DOLLAR ;

RUN ;

Analise Contábil

ANO RECEITA DESPESAS LUCRO DOLLAR

1994 5650 1050 4600 4693.8775

1995 6280 1140 5140 5244.8979

1996 8450 2450 6000 6122.4489 ===== ==== ===== =========

20380 4640 15740 16061.2240

Page 48: Apostila Sas II

48

14.2 - Comando RETAIN

- Tipo: Comando de declaração; - Uso: Data Step;

- Normalmente o SAS inicia todas as variáveis criadas no DATA Step, com o valor “missing”, a cada iteração do DATA Step;

- O Comando RETAIN define uma variável com um valor inicial, e determina que ela não seja reinicializada a cada iteração do DATA Step;

- Deve ser posicionado sempre antes do comando que irá utilizar a variável definida;

RETAIN <variável> [valor inicial] . . . ; Ex.19:

LIBNAME ARQ "C:\SAS\TESTE" ; DATA ARQ.LUCROS ; RETAIN CONT 0; INFILE “C:\DADOS\NUMEROS.TXT”; INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12; CONT=CONT+1 ; ANO = ANO + 1900 ; LUCRO = RECEITA - DESPESAS ; DOLLAR = LUCRO / 0.98 ; RUN;

PROC PRINT DATA=LUCROS NOOBS; TITLE "Analise Contábil" ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ;

Analise Contábil

CONT ANO RECEITA DESPESAS LUCRO DOLLAR 1 1994 5650 1050 4600 4693.8775 2 1995 6280 1140 5140 5244.8979 3 1996 8450 2450 6000 6122.4489 ===== ==== ===== ========= 20380 4640 15740 16061.2240

Page 49: Apostila Sas II

49

14.3 - Comando IF-THEN/ELSE - Tipo: Comando de Execução; - Uso: Data Step;

- Comando que condiciona a execução de um outro comando SAS, de acordo com alguma expressão, que determinará essa condição;

- Se a expressão, que determina a condição, for verdadeira, será executado o comando que vier após o THEN. Se a condição for falsa, será executado o comando que vier após o ELSE. Somente um comando após o THEN e do ELSE

IF <expressão> [THEN] <comando> ;

[ELSE] <comando> ;

expressão Combinação de variáveis com operadores de comparação e/ou operadores lógicos que determinam uma condição.

comando Comando do SAS que será executado de acordo com o resultado

da condição. Operadores de Comparação Operadores Lógicos

GT > maior que AND & e, ambos

LT < menor que OR | ou, um ou outro

EQ = igual a NOT ~ não, negação

LE <= menor ou igual a

GE >= maior ou igual a

NE ~= não é igual (diferente)

NL não é menor

NG não é maior

IN esta no conjunto

Page 50: Apostila Sas II

50

Ex.20: Só o comando IF

Ex.21: Operador de Comparação

LIBNAME DAD "C:\CURSO\SAS" ; DATA DAD.DADOS82 ; INFILE "A:\DADOS\CADASTRO.TXT" LRECL=132; INPUT NOME $ 30. END $ 30. ANO 4. ; IF ANO=1982 ; RUN;

DATA NOTA ; INFILE “A:\NOTAS.TXT” ;

INPUT NOME $ 1-8 NOTA 9-11; IF NOTA LT 3 THEN CONCEITO="E" ;

IF 3 <= NOTA < 5 THEN CONCEITO="D" ; IF 5 LE NOTA LT 7 THEN CONCEITO="C" ; IF 7 LE NOTA LT 9 THEN CONCEITO="B" ;

ELSE CONCEITO="A" ; RUN; Arquivo: NOTAS.TXT

V I V I A N E 2 . 5 L I D I A 9 . 5

P A U L O 6 . 8

C L A U D I O 6 . 8

L U I Z 5 . 5

PROC PRINT NOOBS ; RUN ;

The SAS System

NOME NOTA CONCEITO

VIVIANE 2.5 A LIDIA 9.5 A PAULO 4.5 A

CLAUDIO 6.8 A LUIZ 5.5 A

O que está errado ??? DATA NOTA ; INFILE “A:\NOTAS.TXT” ;

INPUT NOME $ 1-8 NOTA 9-11; IF NOTA LT 3 THEN CONCEITO="E" ; ELSE IF 3 <= NOTA < 5 THEN CONCEITO="D" ;

ELSE IF 5 LE NOTA LT 7 THEN CONCEITO="C" ; ELSE IF 7 LE NOTA LT 9 THEN CONCEITO="B" ; ELSE CONCEITO="A" ;

RUN;

Page 51: Apostila Sas II

51

Ex.22: Operador Lógico Ex.23: Operador Lógico

IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ; IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ;

LIBNAME TESTE "A:\" ; DATA TESTE.CLASSE ; INFILE “C:\ESCOLA\CLASSE.TXT”; INPUT NOME $ 1-7 SEXO $ 8 IDADE 10-11 @13 ALTURA 4.2 ; IF (SEXO="1" AND ALTURA<1.55) OR (SEXO="1" AND IDADE<12)

THEN CLASSE="100" ; ELSE IF (SEXO="2" AND ALTURA<1.55) OR (SEXO="2" AND IDADE<12)

THEN CLASSE="200" ; ELSE CLASSE="300" ;

RUN; Arquivo: CLASSE.TXT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

P A U L A 1 1 1 1 . 6 0

F L A V I A 1 1 5 1 . 6 5

M A R C O S 2 1 1 1 . 6 0

L U I S 2 1 4 1 . 6 0

PROC PRINT NOOBS ;

VAR NOME CLASSE ; RUN ;

The SAS System

NOME CLASSE

PAULA 100 FLAVIA 300 MARCOS 200

LUIS 300

Page 52: Apostila Sas II

52

14.4 - Comando WHERE; - Tipo: Comando de execução; - Uso: Data Step, Proc Step e Opção de arquivos;

- Comando que possui como única ação, selecionar registros, se uma condição for verdadeira;

- Comando WHERE não pode ser utilizado com variáveis que estão sendo criadas no DATA Step por comandos de atribuição, ou pelo comando INPUT;

- Além dos operadores de comparação e lógicos do comando IF, existem alguns operadores especiais no WHERE.

WHERE <expressão> ; expressão Combinação de variáveis com operadores de comparação,

operadores lógicos e/ou operadores especiais, que determinam uma condição. Se for verdadeira, o registro é selecionado, processado e salvo. Se for falso o registro é descartado.

Alguns operadores especiais

BETWEEN-AND entre um e outro

CONTAINS ? contém

Ex.24:

PROC PRINT DATA=ARQ.CADASTRO; WHERE NOME CONTAINS “SILVA”; RUN;

DATA TESTE; SET ARQ.CADASTRO; WHERE SALARIO BETWEEN 1000 AND 3000; RUN;

Page 53: Apostila Sas II

53

14.5 - Comandos DO/END - Tipo: Comando de execução; - Uso: Data Step

- Comando que define a execução de um bloco de comandos do SAS;

- Todos os comandos existentes entre o comando DO e o comando END, deverão ser executados imediatamente;

- Comandos DO e END podem ser usados para executar um grupo de comandos quando se encontra uma condição, normalmente, para ampliar o comando IF-THEN/ELSE.

IF <expressão> THEN DO; <comandos> ;

END ; Ex.25:

DATA TRABALHO ; INFILE "A:\EMPRESA.DAT" ; INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;

IF DEP_NO="201" THEN DO ; DEP="VENDAS" ; SAL=COM+SALARIO ; END ;

ELSE DO ; DEP="ADMINISTRATIVO" ; SAL=SALARIO ; END ;

PROC PRINT NOOBS ; RUN ;

The SAS System NOME DEP_NO COM SALARIO DEP SAL CARLOS 201 1500 1500 VENDAS 3000 ELIANE 101 . 1800 ADMINI 1800 ALVARO 101 . 3800 ADMINI 3800

FATIMA 201 500 1500 VENDAS 2000

Page 54: Apostila Sas II

54

14.6 - Comando LENGTH - Tipo: Comando de declaração; - Uso: Data Step; - Comando que define uma variável, o tipo e o tamanho em bytes.

- Deve ser posicionado sempre antes da utilização da variável. LENGTH variável [$] tamanho . . . variável [$] tamanho ; variável Nome da variável que deseja definir;

$ Caractere opcional, que indica que a variável será alfanumérica.;

tamanho Tamanho em bytes da variável. Ex.26:

DATA TRABALHO ; INFILE "A:\EMPRESA.DAT" ; INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ; LENGTH DEP $ 14 ; IF DEP_NO="201" THEN DO ; DEP="VENDAS" ; SAL=COM+SALARIO ; END ; ELSE DO ; DEP="ADMINISTRATIVO" ; SAL=SALARIO ; END ; PROC PRINT NOOBS ; RUN ; The SAS System NOME DEP_NO COM SALARIO DEP SAL CARLOS 201 1500 1500 VENDAS 3000 ELIANE 101 . 1800 ADMINISTRATIVO 1800 ALVARO 101 . 3800 ADMINISTRATIVO 3800 FATIMA 201 500 1500 VENDAS 2000

Page 55: Apostila Sas II

55

14.7 - Comando DO/END Iterativo

- Tipo: Comando de execução; - Uso: Data Step;

- Comando utilizado para repetir um grupo de comandos “n” vezes. DO <indice>=<início>TO<fim> [BY] <cont> [WHILE/UNTIL] <(expressão)>;

indice Variável auxiliar que armazena o valor da contagem no "loop".

início Valor inicial do "loop".

fim Valor final do "loop".

cont Valor opcional que indica o incremento do "loop".

expressão Campo opcional que representa uma combinação de

variáveis que determinam uma condição para execução do "loop", entre parênteses.

Ex.27: Iterativo

DO MES="JAN","FEV","MAR" ; ( 3 vezes ) DO I = 1 TO 120 ; ( 120 vezes ) DO I = 1 TO 120 BY 2 ; ( 60 vezes ) DO I = 120 TO 1 BY -1 ; ( 120 vezes )

DO I = 1 TO 10 WHILE (X < Y) ; ( 10 vezes ou enquanto X < Y )

DO I = 2 TO 20 BY 2 UNTIL ((X/3)>Y) ; ( 10 vezes ou até (X/3)>Y )

DO I = 10 TO 0 BY -1 WHILE (MES="JAN") ; ( 11 vezes ou enquanto o MES=”JAN” )

Page 56: Apostila Sas II

56

14.8 - Comando DO WHILE

- Tipo: Comando de execução; - Uso: Data Step;

- Comando que repete um grupo de comandos enquanto uma expressão for verdadeira;

- A expressão é validada no início do “loop”;

- Se a expressão for falsa, os comandos dentro do “loop” nunca serão executados.

DO WHILE <(expressão)> ; <== ( Validação no início ) . . . END;

expressão Combinação de variáveis que determina uma condição para a execução do "loop", entre parênteses.

Ex.28:

DATA ; X=0; N=0; DO WHILE (N LE 5) ; ( Validação no início. Executa 6 vezes ) X=X+N**2 ; N=N+1 ; END ; RUN; PROC PRINT;RUN; SAS System X N 55 6

Page 57: Apostila Sas II

57

14.9 - Comando DO UNTIL - Tipo: Comando de execução; - Uso: Data step;

- Comando que repete um grupo de comandos até a expressão ser verdadeira;

- A expressão é validada no fim do “loop”;

- Se a expressão for falsa, os comandos dentro do “loop” serão executados, pelo menos, uma vez.

DO UNTIL <(expressão)> ; . . . END;<== ( Validação no fim )

expressão Combinação de variáveis que determina uma condição para a execução do "loop", entre parênteses.

Ex.29:

DATA ; X=0; N=0; DO UNTIL (N GT 5) ; X=X+N**2 ; N=N+1 ; END ; ( validação no fim. Executa 6 vezes ) RUN; PROC PRINT;RUN; SAS System X N 55 6

Page 58: Apostila Sas II

58

14.10 - Comandos DROP e KEEP

- Tipo: Comandos de declaração; - Uso: Data step e Opção de arquivos;

- O comando DROP, elimina as variáveis de um arquivo SAS;

- O comando KEEP, mantém as variáveis em um arquivo SAS;

- Pode ser posicionado em qualquer lugar de um Data Step;

- Esses dois comandos são exclusivos, ou se usa o comando DROP, ou se usa o comando KEEP, na lógica de um programa SAS.

DROP <variável> <variável> . . . ;

KEEP <variável> <variável> . . . ;

variável Nome de uma variável que será eliminada, ou será mantida em um arquivo SAS (Data Set).

Ex.30:

DATA CLASSE ; INFILE "C:\ALUNOS\CADASTRO.DAT" ; INPUT NOME $ 15. SEXO $ 1. END $ 30. CEP $ 8. RG $ 10. CIC $ 11. MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ; RUN; DATA SUBARQ1 ; SET CLASSE ; DROP PESO ALT ESTCIV ; RUN; DATA SUBARQ2 ; SET CLASSE ; KEEP NOME END CEP ; RUN;

Page 59: Apostila Sas II

59

14.11 - Opções de Arquivos SAS

- Todos arquivos, com estrutura SAS, possuem opções de configuração que são especificados após cada arquivo, entre parênteses;

- São opções do arquivo, que tem sua ação vinculada ao comando no qual o arquivo está sendo especificado;

- Normalmente quando se especifica um arquivo, a ação, ou será de leitura dos dados, ou será de gravação dos dados.

<arquivo SAS> [( <opção> <opção> . . . )] ; Opções KEEP e DROP <arquivo SAS> (DROP=<variável> <variável> . . ) ; <arquivo SAS> (KEEP=<variável> <variável> . . ) ; - Ação vinculada ao comando DATA (gravação de dados) DROP Não grava KEEP Somente grava - Ação vinculada ao comando SET (Leitura de dados) DROP Não leia KEEP Somente leia Ex.31:

DATA CLASSE ; INFILE "C:\ALUNOS\CADASTRO.DAT" ; INPUT NOME $ 15. SEXO $ 1. END $ 30. CEP $ 8. RG $ 10. CIC $ 11. MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ; RUN; DATA SUBARQ1 (DROP=PESO ALT ESTCIV) ; SET CLASSE ; RUN; DATA SUBARQ2 ; SET CLASSE (KEEP=NOME END CEP); RUN;

Page 60: Apostila Sas II

60

14.12 - Comando DELETE - Tipo: Comando de execução; - Uso: Data Step;

- Comando que informa ao SAS, que deve ser parado o processamento do registro atual; não gravar os dados do registro no arquivo e retornar imediatamente para o início do Data Step para uma nova iteração;

- Este comando não permite gravar o registro lido no arquivo SAS;

- Normalmente esse comando é utilizado junto com o comando IF/THEN/ELSE, que determina uma condição para execução do comando DELETE.

IF <expressão> THEN DELETE ;

Ex.32:

DATA PRODUTO ; INFILE “D:\DADOS\PRODUTO.TXT”; INPUT DEP $ 1-2 UNIDADE 4-5 CUSTO 7-9 ; IF UNIDADE <= 0 OR CUSTO <= 0 THEN DELETE ; CUSTOUNI=CUSTO/UNIDADE ; RUN; Arquivo: PRODUTO.TXT

01 02 03 04 05 06 07 08 09

1 7 1 0 5 2 5

4 2 5 0 - 6

3 1 5 1 0 0

2 4 0 3

5 1 1 5

PROC PRINT NOOBS ; RUN ; The SAS System DEP UNIDADE CUSTO CUSTOUNI 17 10 525 52.5 31 5 100 20.0 5 1 15 15.0

Page 61: Apostila Sas II

61

14.13 - Comando OUTPUT - Tipo: Comando de execução; - Uso: Data Step;

- O comando OUTPUT funciona de duas formas:

Determina ao SAS que o registro que está sendo processado deve ser gravado no arquivo, imediatamente, e não, ao final do Data Step (OUTPUT implícito).

Determina para qual arquivo SAS deve ser gravado o

registro que está sendo processado.

- Normalmente é utilizado junto com o comando IF-THEN/ELSE de acordo com uma condição;

ATENÇÃO! Ao se codificar um comando OUTPUT no programa, o SAS desliga o OUTPUT implícito ao final do DATA Step. A ação de salvar o dado fica por conta do programador.

OUTPUT ;

IF <expressão> THEN OUTPUT ;

IF <expressão> THEN OUTPUT <arquivo> ;

expressão Combinação de variáveis e valores que determinam uma condição a ser testada.

arquivo Nome de um arquivo SAS, que já tenha sido especificado

e criado pelo comando DATA.

Page 62: Apostila Sas II

62

Ex.33:

Ex.34:

LIBNAME ARQ "C:\ALUNOS" ; DATA ARQ.HOMENS ARQ.MULHERES ; SET ARQ.CADASTRO ; IF SEXO="F" THEN OUTPUT ARQ.MULHERES ; ELSE OUTPUT ARQ.HOMENS ; RUN; PROC PRINT DATA=ARQ.MULHERES ; VAR NOME ; RUN ; PROC PRINT DATA=ARQ.HOMENS ; VAR NOME ; RUN ;

LIBNAME K1 "A:\" ; DATA K1.VARIACAO ; INFILE “A:\SAIDA.TXT”;

INPUT NOME $ 1-7 NIVEL $ 8-9 VAL 10-13 SALARIO 14-18; SAL=0;

IF NIVEL="10" THEN DO I=1 TO 2 ; SAL=SAL+SALARIO*VAL ;

OUTPUT ; END ;

DROP I VAL; RUN; Arquivo: SAIDA.TXT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

R O S A N A 5 0 1 5 0 0

P A U L O 1 0 1 . 1 1 0 0 0

M A R I A 1 0 1 . 1 5 8 0 0

PROC PRINT ; RUN ;

The SAS System

OBS NOME NIVEL SALARIO SAL

1 PAULO 10 1000 1100 2 PAULO 10 1000 2200 3 MARIA 10 800 920 4 MARIA 10 800 1840

Page 63: Apostila Sas II

63

3º LABORATÓRIO Utilização dos comandos de programação em DATA Step A partir do arquivo SAS CADASTRO, gerado no 1º laboratório:

1 - Monte um programa que crie um novo arquivo SAS, temporário, somente com os dados das pessoas do sexo feminino e casadas. Gere um relatório com os dados desse arquivo;

Significado dos códigos do campo ESTADO CIVIL: (1) solteiro (2) casado (3) separado.

OBS: Utilize o comando SET para abrir o arquivo de dados, e IF/THEN/ELSE para fazer a seleção.

2 - Monte um programa que crie um novo arquivo SAS, temporário;

- Crie três variáveis novas que servirão como acumuladoras do número de pessoas casadas (CAS), solteiras (SOL) e separadas (SEP), a partir da análise da variável ESTADO CIVIL;

- Gere um relatório com os dados deste arquivo;

OBS: Utilize o comando RETAIN para permitir a acumulação. Utilize o comando de atribuição (=) para criar as variáveis e simular um contador. Utilize o comando IF-THEN/ELSE para distinguir o ESTADO CIVIL das pessoas. O último registro processado terá o valor total da distribuição do ESTADO CIVIL.

3 - Monte um programa que crie um novo arquivo SAS, temporário;

- Crie uma variável numérica constante (FAM) igual a 1.1;

- A partir da análise da variável FILHOS, crie uma nova variável (DEP) e altere a variável SALARIO :

Se possui filhos: - DEP ="COM DEPENDENTES"

- SALARIO terá o resultado da multiplicação da variável SALARIO pela variável FAM; Se não possui filhos: - DEP="NÃO POSSUI DEPENDENTES"

Page 64: Apostila Sas II

64

- Gere um relatório com os dados deste arquivo;

OBS: Utilize o comando de atribuição (=) para criar e alterar as variáveis. Utilize o comando IF-THEN/ELSE, interagindo com o comando DO/END para se distinguir se possui ou não filhos e permitir a execução de mais de um comando. Preste atenção aos resultados, verifique se está tudo correto.

4 - Monte um programa que crie um novo arquivo SAS, temporário;

- Selecione as pessoas que ganham menos de R$ 3.000,00;

- Aumente o valor do salário dessas pessoas em 10% até 12 vezes (relativos a 12 meses), ou até o salário atingir um valor superior a R$ 5.000,00. Utilize a equação:

SALARIO=SALARIO*1.1

- Salve os valores incrementados, um a um; - O arquivo só deve conter as variáveis: NOME, EMPRESA, FUNCAO e

SALARIO ; - Gere um relatório com os dados deste arquivo;

OBS: Utilize o comando IF-THEN/ELSE para selecionar as pessoas.

Utilize o comando DO/END Iterativo para aumentar o salário. Utilize o comando KEEP ou DROP para determinar quais as variáveis que serão arquivadas.

5 - Monte um programa que crie três novos arquivos SAS, temporários, (SA, LTDA e INSTITUTO) ;

- Selecione os dados, de maneira que, cada arquivo só possua os dados referentes a cada TIPO DE EMPRESA.

- Elimine dos três arquivos as pessoas que ocupam FUNCAO de "DIRETOR" e "GERENTE";

- Gere os relatórios desses três arquivos;

OBS: Utilize o comando DATA, para criar os arquivos. Utilize o comando

IF/THEN/ELSE, para selecionar e eliminar os dados. Utilize o comando OUTPUT para direcionar a gravação dos registros.

Page 65: Apostila Sas II

65

6 - Monte um programa com um único DATA Step que crie seis novos arquivos SAS, permanentes, (PESSOAL , TRABALHO , FAMILIA, SOLTEIRO, CHEFE e SUB) no diretório c:\curso\sas ;

- Cada arquivo deverá conter os seguintes dados:

PESSOAL Variáveis: NOME, SEXO, IDADE, PESO,

ALTURA, ANIVERSARIO, ESTADO CIVIL, FILHOS, RG e CPF

TRABALHO Variáveis: NOME, RG, CPF, EMPRESA,

FUNCAO, ADMISSAO, SALARIO e TIPO DE EMPRESA

FAMILIA Pessoas que possuam filhos;

SOLTEIRO Pessoas solteiras;

CHEFE Pessoas que ocupam cargo de chefia

(GERENTE e DIRETOR);

SUB Pessoas que não ocupam cargos de chefia;

- Gere relatórios para ver o conteúdo de cada arquivo;

7 - Com os dados do arquivo CADASTRO, monte um programa SAS que gere um arquivo temporário com as pessoas entre 20 e 30 anos, sendo que, cada pessoa selecionada receberá um bonus de R$ 3.500,00 ao salário anual, até completar 30 anos. Crie uma variável nova (BONUS) com o valor total de bonus recebido por cada pessoa selecionada, e uma variável (NUM) com o número de vezes que a pessoa recebeu o bonus;

- Utilize o comando WHERE para selecionar os dados.

- Utilize o comando DO WHILE ou UNTIL para processar a variável com o valor total de bonus recebido;

- Não altere a variável IDADE do arquivo. Crie uma nova variável auxiliar com o valor da idade incrementada.

- Gere um relatório com as variáveis: NOME, IDADE, SALARIO, BONUS , NUM

OBS: Atenção à lógica do WHILE ou UNTIL, para que o programa não entre em “loop”.

Page 66: Apostila Sas II

66

15 - FUNÇÕES DO SAS 15.1 - Introdução

- Toda função representa a execução de uma determinada rotina que irá retornar um determinado valor.

- Toda função SAS é recursiva. Função pode ser executada dentro de outra função, como parâmetro da função;

- As funções no SAS, normalmente, fazem parte de um comando de atribuição e sempre são utilizadas em um DATA Step.

<variável> = <função>(OF argumento, argumento, . . . ) ;

variável Nome até no máximo 32 caracteres, aonde será armazenado

o valor retornado da execução da função.

função Palavra-chave que identifica a função a ser processada.

argumento Parâmetros de entrada para processamento da função.

OF Parâmetro opcional que indica o processamento num intervalo de argumentos. Somente para as funções estatísticas.

Tipos de funções:

- Funções de Tratamento de Caractere; - Funções de Tratamento de Data e Hora; - Funções Matemáticas; - Funções de Estatísticas Descritivas; - Funções Trigonométricas;

- Funções Hiperbólicas; - Funções de Trucamento; - Funções para geração de Números Randômicos; - Funções de Probabilidade; - Funções Financeiras;

- Funções de Macro;

Page 67: Apostila Sas II

67

15.2 - Funções de Tratamento de Caractere

15.2.1 - Função UPCASE

- Função que converte o conteúdo de uma variável ou expressão para caracteres maiúsculos.

<variável>=UPCASE (argumento) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

argumento Variável ou expressão caractere, cujo conteúdo será convertido para letras maiúsculas.

15.2.2 - Função LOWCASE

- Função que converte o conteúdo de uma variável ou expressão para caracteres minúsculos.

<variável>=LOWCASE (argumento) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

argumento Variável ou expressão caractere, cujo conteúdo será convertido para letras minúsculas.

Page 68: Apostila Sas II

68

15.2.3 - Função SUBSTR

- Função que efetua a manipulação do conteúdo de uma variável caractere.

<variável>=SUBSTR (arg1, arg2, [arg3]) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

arg1 Primeiro argumento, determina a variável ou expressão

caractere cujo conteúdo será manipulado.

arg2 Segundo argumento, determina a posição inicial do conteúdo da variável, que será manipulado.

arg3 Terceiro argumento, opcional, determina o número de

caracteres do conteúdo da variável que se deseja manipular. Se não for especificado, a função pegará todos os caracteres, do valor do segundo argumento até o final.

OBS: É possível manipular dados numéricos. Estes serão automaticamente convertidos para caractere, mas atenção, todo campo numérico é alinhado pela direita e possui um formato padrão de 12 dígitos, no mínimo, isso equivale a 12 caracteres resultantes, na conversão.

Número:

3 5

Caractere:

3 5

Page 69: Apostila Sas II

69

15.2.4 - Função COMPRESS - Função que retira caracteres, individualmente, de um

argumento. <variável>=COMPRESS(arg1,[arg2]);

variável Nome até 32 caracteres que armazenará o resultado do processamento da função;

arg1 Primeiro argumento, determina a variável ou expressão

caractere cujo conteúdo será compactado;

arg2 Segundo argumento, opcional e entre aspas, determina um ou mais caracteres que serão retirados, individualmente, do primeiro argumento.

OBS:Se o segundo argumento não for especificado, a função assumirá o “branco” como caractere “default” para ser retirado.

15.2.5 - Função LENGTH - Função que informa o tamanho, em bytes, do argumento. <variável>=LENGTH(arg); variável Nome até 32 caracteres que armazenará o resultado,

numérico, do processamento da função;

arg Argumento, determina a variável ou expressão caractere cujo conteúdo será determinado o tamanho;

OBS: O Valor retornado pela função LENGTH, sempre será numérico.

Page 70: Apostila Sas II

70

Ex.35: Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as

variáveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da variável RG o valor numérico do valor caractere que identifica a Secretaria de Segurança Pública, armazenado-os em duas novas variáveis: RG_NUM e RG_SSP. DATA NOVO ; INFILE “C:\ID\RG.DAT”; INPUT RG $ 18. ; RG1=0 ; RG2=0 ; AUX1=COMPRESS ( RG ) ; AUX2=LENGTH ( AUX1 ) ; DO I=1 TO AUX2 ; AUX3=SUBSTR ( AUX1, I, 1 ) ; IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ;

ELSE RG2=RG2+1 ; END ; RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ; RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 ); RG_SSP = UPCASE ( RG_SSP ) ; DROP AUX1 AUX2 AUX3 I RG1 RG2 ; RUN; Arquivo: RG.TXT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 5 8 4 1 6 6 s s p / d f

2 3 4 s s p / s p

2 2 3 9 7 4 8 8 s s p / r g

PROC PRINT NOOBS ;

VAR RG_NUM RG_SSP ; RUN ;

SAS

RG_NUM RG_SSP

584166 SSP/DF 234 SSP/SP 22397488 SSP/RG

Page 71: Apostila Sas II

71

15.2.6 - Função SCAN

- Função que retorna caracteres de acordo com a posição

relativa de um caractere específico.

<variável>=SCAN (arg1, arg2, [arg3]) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

arg1 Primeiro argumento, determina a variável ou expressão

caractere cujo conteúdo será manipulado.

arg2 Segundo argumento, determina a posição dos caracteres, que se deseja, em relação a um caractere específico;

arg3 Terceiro argumento, opcional e entre aspas determina o

caractere que servirá como limite entre os caracteres desejados. Se não for especificado, todos os caracteres especiais serão limítrofes.(! @ # $ % & * - , ; branco).

OBS: O resultado da função SCAN será armazenado numa variável com o tamanho de 200 bytes, por “default”.

Ex.36:

DATA PALAVRA; REGIAO=”FRANÇA#ALEMANHA#ESPANHA#ITÁLIA”; PAIS=SCAN(REGIAO,1,”#”); OUTPUT ; PAIS=SCAN(REGIAO,2,”#”); OUTPUT ; PAIS=SCAN(REGIAO,3,”#”); OUTPUT ; PAIS=SCAN(REGIAO,4,”#”); OUTPUT ; RUN; PROC PRINT; VAR PAIS; RUN; The SAS System PAIS FRANÇA ALEMANHA ESPANHA ITÁLIA

Page 72: Apostila Sas II

72

15.2.7 - Função INDEX

- Função que retorna um valor numérico que representa a primeira posição de um determinado caractere dentro do argumento.

<variável>=INDEX (arg1, arg2) ;

variável Nome até 32 caracteres que armazenará o resultado, numérico, do processamento da função.

arg1 Primeiro argumento, determina a variável ou expressão

caractere cujo conteúdo será manipulado.

arg2 Segundo argumento, determina o caractere, entre aspas, que se deseja localizar no primeiro argumento.

OBS: Se o caractere especificado não for encontrado, a função index retornará o valor zero.

Ex.37:

DATA POSICAO; REGIAO=”FRANÇA#ALEMANHA#ESPANHA#ITÁLIA”; LOCAL=INDEX(REGIAO,”ESPANHA”); OUTPUT ; LOCAL=INDEX(REGIAO,”NHA”); OUTPUT ; LOCAL=INDEX(REGIAO,”I”); OUTPUT ; LOCAL=INDEX(REGIAO,”ING”); OUTPUT ; RUN; PROC PRINT; VAR LOCAL; RUN; The SAS System LOCAL 17 13 25 0

Page 73: Apostila Sas II

73

Ex.38: Solução Alternativa 1

Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variáveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da variável RG o valor numérico do valor caractere que identifica a Secretaria de Segurança Pública, armazenado-os em duas novas variáveis: RG_NUM e RG_SSP. DATA NOVO ; LENGTH AUX $ 6; INFILE “C:\ID\RG.DAT”; INPUT RG $ 18. ; RG_NUM=SCAN( RG, 1,”S” ) ; AUX=SCAN( RG, 2, “/” ); RG_SSP=”SSP/” || UPCASE(AUX ); RUN; Arquivo: RG.TXT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 5 8 4 1 6 6 s s p / d f

2 3 4 s s p / s p

2 2 3 9 7 4 8 8 s s p / r g

PROC PRINT NOOBS ;

VAR RG_NUM RG_SSP ; RUN ;

SAS

RG_NUM RG_SSP

584166 SSP/DF 234 SSP/SP 22397488 SSP/RG

Page 74: Apostila Sas II

74

Ex.39: Solução Alternativa 2

Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variáveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da variável RG o valor numérico do valor caractere que identifica a Secretaria de Segurança Pública, armazenado-os em duas novas variáveis: RG_NUM e RG_SSP. DATA NOVO ; INFILE “C:\ID\RG.DAT”; INPUT RG $ 18. ; RG=UPCASE(RG); IF INDEX(RG,”S”)>0; RG_NUM=SUBSTR(RG, 1, INDEX(RG,”S” )-1) ; RG_SSP=SUBSTR(RG, INDEX(RG,”S”)); RUN; Arquivo: RG.TXT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

5 8 4 1 6 6 s s p / d f

2 3 4 s s p / s p

2 2 3 9 7 4 8 8 s s p / r g

PROC PRINT NOOBS ;

VAR RG_NUM RG_SSP ; RUN ;

SAS

RG_NUM RG_SSP

584166 SSP/DF 234 SSP/SP 22397488 SSP/RG

Page 75: Apostila Sas II

75

15.3 - Funções de Truncamento

15.3.1 - Função INT

- Função que retorna com o valor inteiro de uma variável ou de uma expressão.

<variável> = INT ( argumento ) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

argumento Variável ou expressão numérica, da qual se deseja obter o

valor inteiro.

15.3.2 - Função ROUND - Função que retorna um valor arredondado de uma

variável ou expressão numérica.

<variável> = ROUND ( arg1, [arg2] ) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

arg1 Variável ou expressão numérica da qual se deseja

arredondar.

arg2 Argumento opcional, especifica o múltiplo do arredondamento e a posição numérica aonde será feita o arredondamento ( 1, 10, . . . ou 0.1, 0.01, . . . ). Se não for especificado, a função arredondará para um valor inteiro.

Page 76: Apostila Sas II

76

Ex.40:

DATA DADOS ; INFILE “A:\NUMEROS.DAT”; INPUT X 7.; TRUNCA = INT ( X ) ; INTEIRO = ROUND ( X , 1 ) ; DEZENA = ROUND ( X , 10 ) ; CENTENA = ROUND ( X , 100 ) ; DECIMO = ROUND ( X , 0.1 ) ; CENTES = ROUND ( X , 0.01 ) ; MULT5=ROUND ( X , 5 ) ; RUN; Arquivo: NUMEROS.DAT

01 02 03 04 05 06 07

3 2 6 . 5 4

1 9 7 7 . 0 9

5 5 8 . 8 8

1 5 8 8 . 2 9

PROC PRINT DOUBLE; RUN ; The SAS System

13:24 Monday, January 22, 1996 OBS X TRUNCA INTEIRO DEZENA CENTENA DECIMO CENTES MULT5 1 326.54 326 327 330 300 326.5 326.54 325 2 1977.09 1977 1977 1980 2000 1977.1 1977.09 1975 3 558.88 558 559 560 600 558.9 558.88 560 4 1588.29 1588 1588 1590 1600 1588.3 1588.29 1590

Page 77: Apostila Sas II

77

15.4 - Funções Estatísticas Descritivas

15.4.1 - Função SUM

- Função que efetua um somatório de valores entre variáveis numéricas, para cada registro de dados.

<variável> = SUM ( [OF] var1, var2, . . . varn ) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

var1, var2, . . . varn Nome das variáveis numéricas que se deseja

efetuar um somatório. OF Opcional, identifica um intervalo de variáveis.

15.4.2 - Função MEAN

- Função que efetua uma média entre os valores de variáveis numéricas, para cada registro de dados.

<variável> = MEAN ( [OF] var1, var2, . . ., varn ) ;

variável Nome até 32 caracteres que armazenará o resultado do processamento da função.

var1, var2, . . . varn Nome das variáveis numéricas que se deseja

efetuar uma média.

OF Opcional, identifica um intervalo de variáveis.

Page 78: Apostila Sas II

78

Ex.41: LIBNAME T "C:\" ;

DATA T.TEMP ; INFILE “C:\REGIAO\TEMP.DAT”;

INPUT (T1-T6) (4.) ; TEMPSOMA = SUM ( OF T1-T6 ) ;

TEMPMED = MEAN ( OF T1-T6 ) ; RUN; Arquivo: TEMP.DAT

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 3 . 5 2 5 . 2 2 4 . 8 2 5 . 7 2 5 . 8 2 2 . 0

1 8 . 5 1 7 . 4 1 8 . 9 1 8 . 9 2 0 . 5 2 0 . 8

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ; RUN ; The SAS System

14:18 Monday, January 22, 1996

T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED

23.5 25.2 24.8 25.7 25.8 22.0 147 24.5000

18.5 17.4 18.9 18.9 20.5 20.8 115 19.1667

Page 79: Apostila Sas II

79

15.5 - Funções de Tratamento de Data e Hora 15.5.1 - Função MDY - Função que gera uma data a partir de valores de dia, mês

e ano. <variável>=MDY(mm, dd, yyyy); variável Nome até 32 caracteres que armazenará o resultado do

processamento da função; mm Valor numérico que representa o mês; dd Valor numérico que representa o dia; yyyy Valor numérico que representa o ano.

15.5.2 - Funções: DAY, MONTH , YEAR

- Funções que extraem de uma data o dia, o mês e o ano respectivamente.

<variável>=DAY(data); <variável>=MONTH(data); <variável>=YEAR(data); variável Nome até 32 caracteres que armazenará o resultado do

processamento da função; data Valor que representa uma data SAS.

Page 80: Apostila Sas II

80

15.5.3 - Função TODAY - Função que retorna a data atual do ambiente de

processamento. Não possui argumentos. <variável>=TODAY(); 15.5.4 - Função TIME - Função que retorna a hora atual do ambiente de

processamento. Não possui argumentos. <variável>=TIME(); 15.5.5 - Funções: HOUR, MINUTE e SECOND

- Funções que extraem de um valor tempo a hora, minuto e segundo respectivamente.

<variável>=HOUR(tempo); <variável>=MINUTE(tempo); <variável>=SECOND(tempo); variável Nome até 32 caracteres que armazenará o resultado do

processamento da função; tempo Valor que representa o tempo no formato SAS.

Page 81: Apostila Sas II

81

15.6 - Funções MACRO 15.6.1 - Função %SYSFUNC

- Função macro que permite executar funções de DATA Step em qualquer parte do programa SAS.

%SYSFUNC(função, [formato]);

função Função de DATA Step que será utilizada; formato Argumento opcional que especifica um formato para o

resultado da função.

Page 82: Apostila Sas II

82

Ex.42: Tratamento de DATA

DATA ANIVERSARIO; INFILE "C:\DADOS.TXT" INPUT DIA 1-2 MES 4-5 ANO 7-10; ANIV=MDY(MES,DIA,ANO); IDADE_ANO=INT((TODAY()-ANIV)/365.25); IDADE_DIA=”01jan2000"d - ANIV; RUN; Arquivo: DADOS.TXT

1 2 3 4 5 6 7 8 9 10

1 0 1 1 1 9 7 6

2 5 0 4 2 0 0 0

1 4 0 8 1 9 3 4

0 8 0 1 1 9 6 7

0 3 0 3 1 9 5 5

TITLE1 “Relatório de Idades”; TITLE2 “Em relação a data de hoje: %SYSFUNC(TODAY(), ddmmyy10.)”; PROC PRINT;RUN; Relatório de Idades Em relação a data de hoje: 04/04/2006 IDADE_ IDADE_ Obs DIA MES ANO ANIV ANO DIA 1 10 11 1976 6158 29 8452 2 25 4 2000 14725 5 -115 3 14 8 1934 -9271 71 23881 4 8 1 1967 2564 39 12046 5 3 3 1955 -1765 51 16375

Page 83: Apostila Sas II

83

4º LABORATÓRIO

Utilizar as funções do SAS.

1 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um novo arquivo SAS, temporário, e as novas variáveis:

DV Conterá os dois últimos caracteres da variável CPF;

INTEIRO Conterá o valor inteiro da variável SALARIO; ARR1 Conterá o arredondamento da expressão SALARIO*0.8235 para um valor

com duas casas decimais; ARR2 Conterá o arredondamento da expressão SALARIO*0.8235 para um valor

inteiro; ARR3 Conterá o arredondamento da expressão SALARIO*0.8235 para um valor

múltiplo de 5; T_EMP Conterá o tempo do funcionário na empresa, em anos; APOS Conterá a data que o funcionário poderá se aposentar, sabendo-se que a

idade para solicitar aposentadoria é com 65 anos; NO_INV Conterá a o formato “nome sobrenome” da variável NOME, que

atualmente está como “sobrenome,nome”;

- Gere um relatório para verificar os resultados;

OBS: Utilize as funções: SUBSTR, INT, ROUND, YEAR, MDY, INDEX ou SCAN e o operador ||.

2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS, temporário, e as novas variáveis novas:

SAL_FAM Salário família, só para quem possui filhos. Será o resultado do

SALARIO*(1+(FILHOS*0.05)) ;

SAL_COM Salário comissionado, só para quem possui cargo de chefia. Será o resultado do SALARIO*1.2 ;

SAL_SOM Somatório de salários. Será o resultado do somatório entre as variáveis:

SAL, SAL_FAM e SAL_COM;

SAL_MED Média dos salários. Será o resultado da média entre as variáveis: SAL, SAL_FAM e SAL_COM ;

- Gere um relatório para visualizar os resultados;

OBS: Utilize as funções SUM e MEAN, para somar e tirar a médias entre as variáveis, respectivamente.

Page 84: Apostila Sas II

84

16 - Comandos de Configuração

16.1 - Comando OPTIONS - Tipo: Comando de declaração; - Uso: Livre;

- Comando definição que altera e configura opções de performance, de impressão, de visualização do ambiente SAS, de comunicação, etc

OPTIONS opt1 opt2 . . . optn ;

Algumas opções:

COMPRESS=NO Opção que especifica a compactação dos dados na geração de um arquivo

Data set ( YES ou CHAR/BIN/NO );

DEVICE=WIN Opção que especifica um "driver" para impressão ou saída de relatório;

OBS=MAX Opção que especifica qual será o último registro a ser processado; FIRSTOBS=1 Opção que especifica qual será o primeiro registro a ser processado;

(NO)DATE Opção que determina a “impressão” ou não, da data nos relatórios;

(NO)NUMBER Opção que determina a “impressão” ou não, do número da página; PAGENO= Opção que especifica a numeração inicial das paginas de “OUTPUT”, para

cada execução;

LINESIZE= Opção que especifica o tamanho da linha de “impressão” do relatório (número de colunas);

PAGESIZE= Opção que especifica o tamanho da pagina de “impressão” (número de

linhas); ERRORS=20 Opção que especifica o número máximo de erros a serem exibidos no

“LOG”; (NO)REPLACE Opção que determina a sobreposição ou não, dos dados de um arquivo; SORTSIZE= Opção que especifica a quantidade de memória que o procedimento SORT

poderá utilizar (em bytes). No windows: 66MBytes; MEMSIZE= Opção que especifica a quantidade de memória que o sistema SAS poderá utilizar para qualquer processamento. No windows: livre;

Page 85: Apostila Sas II

85

Ex.43:

Ex.44:

LIBNAME ARQ "C:\SAS" ; OPTIONS COMPRESS=YES DEVICE=WIN PS=66 LS=132 NODATE ; DATA ARQ.OPT ; SET ARQ.DADOS ; <comando> <comando> . . . PROC PRINT ; RUN ; SERÁ GERADO UM ARQUIVO COMPACTADO E, UM RELATÓRIO COM 66 LINHAS E 132 COLUNAS POR PÁGINA, SEM A IMPRESSÃO DA DATA NO CABEÇALHO, NO AMBIENTE WINDOWS.

LIBNAME ARQ "C:\ALUNO" ; OPTIONS SORTSIZE=200M PS=60 LS=132 DEVICE=WINPRTM; PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN; PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN; O PROCEDIMENTO SORT PODERÁ UTILIZAR ATE 200MBYTES DE MEMÓRIA PARA PROCESSAR E SERÁ GERADO UM RELATÓRIO COM 60 LINHAS E 132 COLUNAS POR PÁGINA, NA IMPRESSORA PADRÃO DO WINDOWS.

Page 86: Apostila Sas II

86

16.2 - Comando LABEL - Tipo: Comando de declaração; - Uso: Data Step e Proc Step;

- Comando de Definição, utilizado para atribuir rótulos descritivos as variáveis;

- Utilizado para melhorar a aparência de um relatório. Pode-se associar

rótulos com no máximo 256 caracteres; - DATA Step Permanente, armazenado na estrutura do arquivo; - PROC Step Temporário, apenas para a execução do

procedimento.

LABEL <variável> = "rótulo" . . . ; variável Nome da variável na qual será associado um rótulo

descritivo. rótulo Descrição, até 256 caracteres, associada a variável.

Ex.45:

DATA ROTULO ; INFILE “C:\CADASTRO\ROTULO.DAT”;

INPUT NOME $6. @8 ALT 4.1 @13 PES 4.1 ; LABEL ALT = "ALTURA EM POLEGADAS"

PES = "PESO EM LIBRAS" ; RUN; Arquivo: ROTULO.DAT

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

P A U L O 5 9 . 0 9 9 . 5

M A R C I O 5 7 . 3 8 3 . 0

S O N I A 5 1 . 3 5 0 . 5

PROC PRINT NOOBS SPLIT="" ; RUN ;

The SAS System

NOME ALTURA EM PESO EM POLEGADAS LIBRAS

PAULO 59.0 99.5 MARCIO 57.3 83.0 SONIA 51.3 50.5

Page 87: Apostila Sas II

87

16.3 - Comando FORMAT - Tipo: Comando de declaração; - Uso: Data Step e Proc Step;

- Comando de definição que serve para formatar as variáveis e melhorar a aparência dos dados num relatório;

- DATA Step Permanente, armazenado na estrutura do arquivo; - PROC Step Temporário, apenas para a execução do

procedimento.

FORMAT <variável> <formatow.d> . . . ; variável Nome da variável que será formatada.

formatow.d Nome do formato com o tamanho do campo (w) e número de casas decimais (d), criado pelo próprio usuário ou da biblioteca de formatos do SAS:

COMMAXw.d Formata com pontos e

vírgula (Padrão Brasil); DDMMYYw. Formata um campo data

com “/”;

Ex.46:

PROC PRINT DATA=ARQ.CADASTRO LABEL; VAR NOME DATA_ANIV SALARIO; LABEL DATA_ANIV=”Data de Aniversário” SAL=”Salário”; FORMAT DATA_ANIV DDMMYY10. SALARIO COMMAX12.2 ; RUN; The SAS System Data de Obs NOME Aniversário Salário 1 SONTAS,MARCIO 16/04/1985 3.240,05 2 SERPA,MARCO 06/02/1941 26.540,67 3 LONAS,PAULO 24/07/1930 55.211,27 4 CERTO,MARCO 03/07/1979 3.121,80 5 BENTES,MARCO 06/06/1967 9.452,31 6 MARUEL,PAULO 18/07/1977 3.288,80 7 LUILA,ROSANE 27/03/1950 25.628,72 8 APARECIDO,ELIANE 17/03/1943 . 9 SAUL,ROSANE 16/03/1957 24.949,40 10 PISCO,ROSANE 04/09/1962 9.710,13

Page 88: Apostila Sas II

88

16.4 - Comando ODS - Tipo: Comando de declaração; - Uso: Livre;

- Output Delivery System (ODS), é um recurso especial para a manipulação dos resultados gerados pelos procedimentos SAS, permitindo a escolha de padrões de impressão e visualização, geração de arquivos e geração de documentos.

ODS <padrão> [opções] ; . . . ODS <padrão> CLOSE ; padrões: HTML Gera os resultados no padrão “html”; PDF Gera os resultados no padrão “Adobe”; PS Gera os resultados no padrão “PostScript”; RTF Gera os resultados no padrão “Rich Text”; opção genérica: FILE= Determina a localização e nome do arquivo gerado com o

padrão. OBS: Cada padrão de visualização possui suas próprias opções;

Page 89: Apostila Sas II

89

Ex.47:

ODS HTML FILE="C:\temp\teste.html" STYLE=minimal; PROC PRINT DATA=ARQ.CADASTRO(OBS=10) LABEL ; VAR NOME DATA_ANIVERSARIO SALARIO ; LABEL DATA_ANIVERSARIO="Data de Aniversário" SALARIO="Salário"; FORMAT DATA_ANIV DDMMYY10. SAL COMMAX12.2 ; RUN; ODS HTML CLOSE;

The SAS System

Obs NOME Data de

Aniversário Salário

1 SONTAS,MARCIO 16/04/1985 3.240,05

2 SERPA,MARCO 06/02/1941 26.540,67

3 LONAS,PAULO 24/07/1930 55.211,27

4 CERTO,MARCO 03/07/1979 3.121,80

5 BENTES,MARCO 06/06/1967 9.452,31

6 MARUEL,PAULO 18/07/1977 3.288,80

7 LUILA,ROSANE 27/03/1950 25.628,72

8 APARECIDO,ELIANE 17/03/1943 .

9 SAUL,ROSANE 16/03/1957 24.949,40

10 PISCO,ROSANE 04/09/1962 9.710,13

Page 90: Apostila Sas II

90

17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS

17.1 - Procedimento MEANS

- Procedimento que produz relatórios com estatísticas descritivas simples para variáveis numéricas. O relatório gerado possui uma formatação padrão com algumas estatísticas: Freqüência (N), Média (MEAN), Desvio Padrão (STD), valor máximo (MAX) e o valor mínimo (MIN).

PROC MEANS [opções] ;

CLASS <lista de variáveis> ; VAR <lista de variáveis> ; BY <lista de variáveis> ;

RUN;

opções DATA= Nome do arquivo SAS para ser processado; MAXDEC= Especifica o número de casas decimais (máximo 8); NOPRINT Opção para não gerar o relatório;

CLASS Determina uma ou mais variáveis que possibilitam o agrupamento de dados. OBS: Não é necessário executar um PROC SORT, antes;

VAR Determina as variáveis numéricas que serão analisadas pelo procedimento;

BY Determina uma ou mais variáveis que possibilitam o agrupamento de dados. OBS: É necessário executar um PROC SORT, antes;

Page 91: Apostila Sas II

91

Ex.48:

Ex.49:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC MEANS DATA=ARQ.MEDIA ; RUN ; The SAS System Variable N Mean Std Dev Minimum Maximum --------------------------------------------------------------------------------------------- IDADE 18 26.0000000 6.5079137 18.0000000 38.0000000 ALTURA 18 1.7227778 0.0769878 1.5800000 1.8500000 PESO 18 74.4444444 14.9123803 50.0000000 110.0000000 -----------------------------------------------------------------------------------------------

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; RUN ; The SAS System Variable N Mean Maximum Minimum ---------------------------------------------------------------------------- IDADE 18 26.00 38.00 18.00 ALTURA 18 1.72 1.85 1.58 PESO 18 74.44 110.00 50.00 ----------------------------------------------------------------------------

Page 92: Apostila Sas II

92

Ex.50:

Ex.51:

LIBNAME ARQ "G:\KUSEL\SAS"; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; CLASS TURNO ; VAR IDADE ; RUN ; The SAS System Analysis Variable : IDADE TURNO N Obs N Mean Maximum Minimum ------------------------------------------------------------------------------- 1 12 12 24.42 38.00 18.00 2 6 6 29.17 36.00 21.00 -------------------------------------------------------------------------------

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC SORT DATA=ARQ.MEDIA ; BY TURNO ; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; BY TURNO ; VAR IDADE ; RUN ; The SAS System Analysis Variable : IDADE ---------------------------------- TURNO=1 -------------------------------- N Mean Maximum Minimum ------------------------------------------------------- 12 24.42 38.00 18.00 ------------------------------------------------------- ---------------------------------- TURNO=2 -------------------------------- N Mean Maximum Minimum ------------------------------------------------------- 6 29.17 36.00 21.00 -------------------------------------------------------

Page 93: Apostila Sas II

93

17.2 - Procedimento FREQ

- Procedimento que produz tabelas simples e tabelas cruzadas, da freqüência de variáveis numéricas e caractere.

PROC FREQ [opções] ;

BY <lista de variáveis> ; TABLES <variáveis> / [opções] ;

opções DATA= Nome de um arquivo SAS; PAGE Determina que seja gerado uma tabela por página do relatório.

COMPRESS Determina que seja gerado o máximo de tabelas possíveis em cada página do relatório;

BY Determina uma ou mais variáveis que possibilitam o agrupamento de dados. OBS: É necessário executar um PROC SORT, antes;

TABLES Determina as variáveis e a regra de formação da tabela de freqüência. Utiliza-se o caractere “*” para cruzar as variáveis. Ex.: (a*b , y*x , peso*altura).

opções LIST Os resultados sairão num formato listado ao

invés de uma tabela cruzada. MISSING Inclui os valores "missing" na tabela. OUT= Determina o arquivo SAS de saída. NOPRINT Não gera relatório de saída.

NOCUM Não gera as colunas de freqüência e percentual acumulativo.

NOPERCENT Não gera as colunas com percentuais. NOFREQ Não gera a coluna de freqüência.

Page 94: Apostila Sas II

94

Ex.52:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO IDADE ; RUN ; The SAS System Cumulative Cumulative SEXO Frequency Percent Frequency Percent --------------------------------------------------------------------- F 9 50.0 9 50.0 M 9 50.0 18 100.0 Cumulative Cumulative IDADE Frequency Percent Frequency Percent ---------------------------------------------------------------------- 18 2 11.1 2 11.1 19 1 5.6 3 16.7 20 1 5.6 4 22.2 21 2 11.1 6 33.3 22 2 11.1 8 44.4 25 2 11.1 10 55.6 26 1 5.6 11 61.1 28 1 5.6 12 66.7 29 1 5.6 13 72.2 32 1 5.6 14 77.8 33 1 5.6 15 83.3 35 1 5.6 16 88.9 36 1 5.6 17 94.4 38 1 5.6 18 100.0

Page 95: Apostila Sas II

95

Ex.53:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.CADASTRO ; TABLES SEXO*EMPRESA ; RUN ; The FREQ Procedure Table of sexo by empresa sexo empresa Frequency| Percent | Row Pct | Col Pct |ATLAS S.|MALTA LT|PARIS IN| Total |A. |DA |STITUTO | ---------+--------+--------+--------+ F | 58 | 101 | 112 | 271 | 13.36 | 23.27 | 25.81 | 62.44 | 21.40 | 37.27 | 41.33 | | 59.79 | 58.05 | 68.71 | ---------+--------+--------+--------+ M | 39 | 73 | 51 | 163 | 8.99 | 16.82 | 11.75 | 37.56 | 23.93 | 44.79 | 31.29 | | 40.21 | 41.95 | 31.29 | ---------+--------+--------+--------+ Total 97 174 163 434 22.35 40.09 37.56 100.00 Frequency Missing = 116

Page 96: Apostila Sas II

96

Ex.54:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO*IDADE / LIST ; RUN ; The SAS System Cumulative Cumulative SEXO IDADE Frequency Percent Frequency Percent -------------------------------------------------------------------------------- F 18 2 11.1 2 11.1 F 19 1 5.6 3 16.7 F 20 1 5.6 4 22.2 F 21 1 5.6 5 27.8 F 22 2 11.1 7 38.9 F 25 1 5.6 8 44.4 F 36 1 5.6 9 50.0 M 21 1 5.6 10 55.6 M 25 1 5.6 11 61.1 M 26 1 5.6 12 66.7 M 28 1 5.6 13 72.2 M 29 1 5.6 14 77.8 M 32 1 5.6 15 83.3 M 33 1 5.6 16 88.9 M 35 1 5.6 17 94.4 M 38 1 5.6 18 100.0

Page 97: Apostila Sas II

97

Ex.55:

TITLE; OPTIONS NODATE PAGENO=1; PROC FREQ DATA=ARQ.CADASTRO ; TABLE SEXO*EMPRESA / OUT=TESTE MISSING NOCUM NOPERCENT; RUN; PROC PRINT DATA=TESTE; RUN: The FREQ Procedure Table of sexo by empresa sexo empresa Frequency| Row Pct | Col Pct | |ATLAS S.|MALTA LT|PARIS IN| Total | |A. |DA |STITUTO | ---------+--------+--------+--------+--------+ F | 79 | 58 | 101 | 112 | 350 | 22.57 | 16.57 | 28.86 | 32.00 | | 68.10 | 59.79 | 58.05 | 68.71 | ---------+--------+--------+--------+--------+ M | 37 | 39 | 73 | 51 | 200 | 18.50 | 19.50 | 36.50 | 25.50 | | 31.90 | 40.21 | 41.95 | 31.29 | ---------+--------+--------+--------+--------+ Total 116 97 174 163 550

Obs sexo empresa COUNT PERCENT 1 F 79 14.3636 2 F ATLAS S.A. 58 10.5455 3 F MALTA LTDA 101 18.3636 4 F PARIS INSTITUTO 112 20.3636 5 M 37 6.7273 6 M ATLAS S.A. 39 7.0909 7 M MALTA LTDA 73 13.2727 8 M PARIS INSTITUTO 51 9.2727

Page 98: Apostila Sas II

98

17.3 - Procedimento TABULATE

- O procedimento TABULATE monta relatórios com estatísticas descritivas num formato tabular.

PROC TABULATE [opções] ;

CLASS <variáveis> ; VAR <variáveis> ; BY <variáveis> ; TABLE <página , linha , coluna> / [opções] ;

opções DATA= Nome do arquivo SAS;

CLASS Determina uma ou mais variáveis, numéricas ou caractere, que

possibilitam o agrupamento de dados.e que serão utilizadas como variáveis classificatórias no comando TABLE. OBS: Não é necessário executar um PROC SORT, antes;

VAR Determina as variáveis numéricas que irão participar de uma análise

estatística e que serão utilizadas no comando TABLE;

BY Determina uma ou mais variáveis que possibilitam o agrupamento de dados, com quebra da tabela. OBS: É necessário executar um PROC SORT, antes;

TABLE Determina a regra de formação da tabela;

página Determina uma variável ou expressão que irá definir a regra de

formação das páginas da tabela; linha Determina uma variável ou expressão que irá definir a regra de

formação das linhas da tabela; coluna Determina uma variável ou expressão que irá definir a regra de

formação das colunas da tabela;

opções Opções do comando TABLE:

OBS: Regras de formação: elemento*elemento cruzamento elemento elemento concatenação

(elemento elemento) agrupamento

elementos: variáveis, funções estatísticas (SUM, MEAN, N, PCTN, PCTSUM, etc), ALL (totalizador).

Page 99: Apostila Sas II

99

Ex.56:

Ex.57:

Ex.58:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO ; VAR IDADE PESO; TABLE SEXO , IDADE PESO ; RUN ; ------------------------------------------------- | | IDADE | PESO | | |------------+------------| | | Sum | Sum | |---------------------+------------+------------| |SEXO | | | |---------------------| | | |F | 440.00| 939.00| |---------------------+------------+------------| |M | 344.00| 919.88| -------------------------------------------------

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO ; VAR IDADE PESO; TABLE SEXO , (IDADE PESO) * MEAN ; RUN ; ------------------------------------------------- | | IDADE | PESO | | |------------+------------| | | Mean | Mean | |---------------------+------------+------------| |SEXO | | | |---------------------| | | |F | 31.43| 67.07| |---------------------+------------+------------| |M | 31.27| 83.63| -------------------------------------------------

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO EMPRESA ; VAR PESO; TABLE SEXO, EMPRESA* PESO * MEAN ; RUN ; ------------------------------------------------- | | EMPRESA | | |-------------------------| | | ATLAS | MANTAS | | |------------+------------| | | PESO | PESO | | |------------+------------| | | Mean | Mean | |---------------------+------------+------------| |SEXO | | | |---------------------| | | |F | 65.80| 68.34| |---------------------+------------+------------| |M | 88.45| 80.87| -------------------------------------------------

Page 100: Apostila Sas II

100

Ex.59:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO EMPRESA ; VAR ALTURA; TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE; RUN ; SEXO F ------------------------------------ | | ALTURA | | |------------| | | Mean | |---------------------+------------| |EMPRESA | | |---------------------| | |ATLAS | 1.71| |---------------------+------------| |MANTAS | 1.67| |---------------------+------------| |All | 1.69| ------------------------------------ SEXO M ------------------------------------ | | ALTURA | | |------------| | | Mean | |---------------------+------------| |EMPRESA | | |---------------------| | |ATLAS | 1.82| |---------------------+------------| |MANTAS | 1.79| |---------------------+------------| |All | 1.80| ------------------------------------

Page 101: Apostila Sas II

101

Ex.60:

LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO ALTURA ; TABLE ALTURA , SEXO ALL; RUN ; -------------------------------------------------------------- | | SEXO | | | |-------------------------| | | | F | M | All | | |------------+------------+------------| | | N | N | N | |---------------------+------------+------------+------------| |ALTURA | | | | |---------------------| | | | |1.58 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.6 | 2.00| .| 2.00| |---------------------+------------+------------+------------| |1.63 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.65 | 1.00| 1.00| 2.00| |---------------------+------------+------------+------------| |1.67 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.68 | 1.00| 2.00| 3.00| |---------------------+------------+------------+------------| |1.7 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.72 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.75 | 2.00| 3.00| 5.00| |---------------------+------------+------------+------------| |1.78 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.8 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.81 | 1.00| .| 1.00| |---------------------+------------+------------+------------| |1.85 | .| 1.00| 1.00| |---------------------+------------+------------+------------| |1.86 | .| 1.00| 1.00| |---------------------+------------+------------+------------| |1.88 | .| 1.00| 1.00| |---------------------+------------+------------+------------| |1.9 | .| 1.00| 1.00| |---------------------+------------+------------+------------| |2.05 | .| 1.00| 1.00| --------------------------------------------------------------

Page 102: Apostila Sas II

102

Ex.61:

TITLE1 "Relatório com a Média de Salário"; TITLE2 "e a Distribuição Percentual dos Funcionários por Empresa"; OPTIONS LS=130; PROC TABULATE DATA=ARQ.CADASTRO MISSING; CLASS SEXO EMPRESA; VAR SAL ; TABLE SEXO="Sexo"*EMPRESA="Empresa" ALL="Total", (N*f=6. PCTN="%"*f=commax6.2 SAL=""*MEAN="Média de Salário"*f=commax12.2) ; RUN ; OBS: *f= Formata a variável *= Especifica um LABEL para a variável Relatório com a Média de Salário e a Distribuição Percentual dos Funcionários por Empresa ----------------------------------------------------------- | | | | Média de | | | N | % | Salário | |------------------------------+------+------+------------| |Sexo |Empresa | | | | |--------------+---------------| | | | |F | | 79| 14,36| .| | |---------------+------+------+------------| | |ATLAS S.A. | 58| 10,55| 3.094,50| | |---------------+------+------+------------| | |MALTA LTDA | 101| 18,36| 3.739,14| | |---------------+------+------+------------| | |PARIS INSTITUTO| 112| 20,36| 3.016,84| |--------------+---------------+------+------+------------| |M | | 37| 6,73| .| | |---------------+------+------+------------| | |ATLAS S.A. | 39| 7,09| 3.019,42| | |---------------+------+------+------------| | |MALTA LTDA | 73| 13,27| 4.023,08| | |---------------+------+------+------------| | |PARIS INSTITUTO| 51| 9,27| 2.739,57| |------------------------------+------+------+------------| |Total | 550|100,00| 3.332,21| -----------------------------------------------------------

Page 103: Apostila Sas II

103

5º LABORATÓRIO

Utilização dos procedimentos estatísticos básicos.

Utilizando o arquivo SAS CADASTRO, gerado no 1º LABORATÓRIO:

1 - Gere um relatório com a média, o valor máximo, o valor mínimo e o desvio padrão das variáveis PESO e ALTURA, classificados por SEXO e com apresentação dos resultados com duas casas decimais.

2 - Gere um arquivo SAS, permanente, no diretório c:\curso\sas, com a média , o valor máximo e o valor mínimo da variável IDADE, classificados por EMPRESA.

- Este programa não deve gerar relatório;

- Deverá gerar três variáveis referentes a média, o valor máximo e o valor mínimo da idade: MED_ID, MAX_ID e MIN_ID;

3 - Com o arquivo gerado no item anterior, crie um programa que emita um relatório ordenado por EMPRESA.

- As variáveis deverão ser rotuladas:

MED_ID="Idade Média" MAX_ID="Idade Máxima" MIN_ID="Idade Mínima"

- Os resultados numéricos deverão aparecer formatados com pontos e vírgula.e com no máximo duas casas decimais;

- Deverá ser criado um título: "Variação da Idade por Empresa"

4 - Gere um relatório apenas coma a média e somatório de todas as variáveis

numéricas do arquivo SAS, CADASTRO ordenados por EMPRESA.

5 - Gere um relatório com as tabelas de freqüência de SEXO, IDADE, ESTADO CIVIL, FILHOS, EMPRESA e FUNCAO.

6 - Gere um relatório com uma tabela de freqüência de SEXO versus IDADE.

7 - Gere um relatório com duas tabelas de freqüência de ESTADO CIVIL versus FILHOS e SEXO versus EMPRESA na mesma PROC.

Page 104: Apostila Sas II

104

8 - Gere um relatório com uma tabela que apresente a média das variáveis IDADE e PESO, classificadas pela variável SEXO.

- A variável SEXO, deverá formar as linhas; - As variáveis IDADE e PESO, deverão formar as colunas; - Deverá ser utilizada a opção MEAN para formar as colunas;

(Utilize o procedimento TABULATE)

9 - Gere um relatório com uma tabela que apresente a média e o somatório da variável SALARIO, classificado por SEXO versus EMPRESA.

- A expressão SEXO versus EMPRESA deverá formar as linhas; - A variável SALARIO deverá formar as colunas; - Deverá ser utilizado as opções MEAN e SUM para formar as colunas

- Tamanho da página de 55 linhas e 80 colunas;

(Utilize o procedimento TABULATE)

10 - Acrescente a tabela do relatório anterior :

- Um totalizador na linha e na coluna: ALL; - Rotule todos os elementos (variáveis, estatísticas e totalizadores); - Formate os resultados numéricos com pontos, vírgula e duas decimais; - Título: “Apresentação do Salário por Sexo e Empresa”; - Sem a data e paginação iniciando do 1; - Gere a tabela no padrão HTML e PDF.

Page 105: Apostila Sas II

105

18 - RECURSO DE FORMATAÇÃO ESPECIAL

18.1 - Procedimento FORMAT

- O procedimento FORMAT permite que o usuário crie os seus próprios formatos de leitura e impressão, para variáveis numéricas e caractere.

PROC FORMAT ;

VALUE <nome> [( opções )] <intervalo> = "<descrição>"

VALUE Comando que define um formato diferente para os valores de uma variável numérica ou caractere.

nome - Nome do formato até 32 caracteres; - Nome de formatos para serem aplicados em variáveis caractere,

obrigatoriamente, deverão iniciar com $ ; - Nomes de formato não podem terminar com números.

opções MULTILABEL Permite sobreposição de intervalos; NOTSORTED Não ordenar as descrições;

OBS: A opção MULTILABEL só funcionará em procedimentos que possuem o comando CLASS (PROC MEANS, TABULATE e SUMMARY), que permite ativar o uso do formato com sobreposição através da sua opção MLF

CLASS <variável> / MLF

intervalo - Especifica um valor, ou intervalos, que os valores de uma variável poderá assumir durante a formatação.

- Valores ou intervalos de variáveis caracteres, deverão vir entre aspas. - Parâmetros especiais são utilizados para definir limites de intervalos:

LOW Menor valor encontrado; HIGH Maior valor encontrado; OTHER Qualquer outro valor não identificado; < Não inclui o valor do intervalo.

descrição -Valor, no qual a variável formatada, assumirá no momento de sua utilização;

- No máximo 32K caracteres entre aspas;

Page 106: Apostila Sas II

106

Ex.62:

LIBNAME ARQ "G:\KUSEL\SAS" ; OPTIONS PS=30 ; PROC FORMAT ; VALUE $TUR "1"="MANHA" "2"="TARDE" OTHER="DADO ERRADO" ; VALUE ALT LOW-<1.50="BAIXO" 1.50-<1.70="MEDIO" 1.70-HIGH="ALTO" ; PROC PRINT DATA=ARQ.DADOS ; FORMAT TURNO $TUR. ALTURA ALT. ; RUN ; The SAS System 15:01 Tuesday, January 30, 1996 OBS NOME SEXO IDADE ALTURA PESO TURNO 1 Alfredo M 25 ALTO 80 MANHA 2 Alicia F 22 ALTO 65 MANHA 3 Carol F 22 MEDIO 65 MANHA 4 Paulo M 29 ALTO 90 MANHA 5 Maria F 20 MEDIO 70 MANHA 6 Ricardo M 35 ALTO 83 MANHA 7 Tomas M 26 ALTO 75 MANHA 8 Joao M 38 ALTO 90 MANHA 9 Marcia F 18 MEDIO 50 MANHA 10 Ligia F 19 ALTO 80 MANHA 11 Laura F 18 MEDIO 69 MANHA 12 Paula F 21 MEDIO 58 MANHA 13 Carlos M 21 MEDIO 55 TARDE 14 Jaime M 28 ALTO 75 TARDE 15 Joice F 25 ALTO 60 TARDE 16 Filipe M 32 ALTO 110 TARDE 17 Roberto M 33 ALTO 89 TARDE 18 Lia F 36 MEDIO 76 TARDE

Page 107: Apostila Sas II

107

6º LABORATÓRIO Criar, utilizar e manipular formatos (Procedimento FORMAT)

1 - Criar um programa que gere formatos especiais para os valores das variáveis: IDADE, PESO, ALTURA, ESTADO CIVIL e SALARIO . Gere vários relatórios que utilize esses formatos.

Criar rótulos para variável IDADE:

15-25 = "15 a 25 anos" 26-50 = "26 a 50 anos" 51-HIGH = "Mais de 50 anos"

Criar faixas para a variável PESO:

50-<70 = "50 a 69" 70-<80 = "70 a 79" 80-<100 = "80 a 99"

Criar rótulos para a variável ALTURA:

1.50-<1.66 = "1,50 a 1,65" 1.67-<1.80 = "1,66 a 1,79" 1.80-HIGH = "Mais de 1,80"

Criar rótulos para a variável ESTADO CIVIL:

"1" = "SOLTEIRO" "2" = "CASADO" "3" = "SEPARADO"

Criar faixas para a variável SALARIO:

do menor até 2000, não incluso = "Iniciante" de 2000 até 4000, não incluso = "Junior" de 4000 até 7000, não incluso = "Senior" de7000 até 10000, não incluso = "Gerente" acima de 10000, não incluso = "Diretor"

Do menor ao maior valor, missing=”Total” missing=”Desempregado”; OBS: Os dois últimos intervalos são uma sobreposição.

Page 108: Apostila Sas II

108

2 - Gere um relatório com tabelas de freqüência de IDADE, ALTURA, PESO e ESTADO CIVIL com os dados formatados .

(Utilize o procedimento FREQ com o comando FORMAT)

3 - Gere um relatório com uma tabela de freqüência de IDADE versus ESTADO

CIVIL, com os dados formatados

(Utilize o procedimento FREQ com o comando FORMAT)

4 - Gere um relatório com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os dados de SALARIO formatados.

- Utilize o procedimento TABULATE;

- Comando FORMAT; - Comando CLASS, com a opção MLF, apenas para o SALARIO.

Page 109: Apostila Sas II

109

19 - COMBINAÇÃO DE ARQUIVOS SAS

19.1 - Concatenação

- Concatenação é a união sem critérios, de dois ou mais arquivos SAS, um após o outro, na vertical, originando um único arquivo.

SET <arquivo1> . . . <arquivon> ;

ARQ1 ARQ2

ARQ1

ARQ2

DATA ARQ3; SET ARQ1 ARQ2; RUN;

ARQ3

Page 110: Apostila Sas II

110

Ex.63:

LIBNAME IN "A:\" ; DATA IN.ARQ1 ; INFILE “A:\ARQ1.TXT”;

INPUT NOME $ 1-6 @8 SEXO $1. ; RUN; Arquivo: ARQ1.TXT

01 02 03 04 05 06 07 08

M A R C I O M

S A N D R A F

P A U L A F

C E L S O M

DATA IN.ARQ2 ; INFILE “C:\ARQ2.TXT”;

INPUT NOME $ 1-7 IDADE 2. ; RUN ; Arquivo: ARQ2.TXT

M A R C I O 2 5

C E L S O 2 2

P A U L A 1 8

S A N D R A 1 5

DATA IN.CONCAT ;

SET IN.ARQ1 IN.ARQ2 ; RUN; PROC PRINT DATA=IN.CONCAT ; RUN ;

SAS

OBS NOME SEXO IDADE 1 MARCIO M . 2 SANDRA F . 3 PAULA F . 4 CELSO M . 5 MARCIO 25 6 CELSO 22 7 PAULA 18 8 SANDRA 15

Page 111: Apostila Sas II

111

19.2 - Combinação Ordenada ( Match-Merging )

- Combinação ordenada é a união de dois ou mais arquivos SAS em um único arquivo, combinado e ordenado por uma ou mais variáveis comum. Os arquivos deverão estar ordenados, antes do "Match-Merging", pela variável comum.

MERGE <arquivo1> . . . <arquivon> ;

BY <variável comum> ;

PROC SORT DATA=ARQ1; BY <variável comum>;RUN; PROC SORT DATA=ARQ2; BY <variável comum>;RUN; DATA ARQ3 ; MERGE ARQ1 ARQ2 ; BY <variável comum> RUN ; ARQ3

ARQ1 ARQ2

ARQ1 ARQ2

Page 112: Apostila Sas II

112

Ex.64:

LIBNAME IN "C:\KUSEL\CUR_SAS" ; PROC SORT DATA=IN.ARQ1 ; BY NOME ; PROC SORT DATA=IN.ARQ2 ; BY NOME ; DATA IN.ORD ; MERGE IN.ARQ1 IN.ARQ2 ; BY NOME ; RUN; PROC PRINT DATA=IN.ORD ; RUN ; SAS OBS NOME SEXO IDADE 1 CELSO M 22 2 MARCIO M 25 3 PAULA F 18 4 SANDRA F 15

Page 113: Apostila Sas II

113

7º LABORATÓRIO Utilização da combinação de arquivos SAS

Utilizando os arquivos SAS gerados no 3º LABORATÓRIO item 6:

1 - Monte um programa que gere um arquivo SAS (CONCAT) que será a concatenação dos dados dos arquivos: PESSOAL e TRABALHO. Gere um relatório com os dados do arquivo CONCAT, para visualizar o resultado.

(Utilize os comandos DATA e SET)

2 - Monte um programa que gere um arquivo SAS (INTER) que será a intercalação ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma variável comum CPF. Gere um relatório com os dados do arquivo INTER, para visualizar o resultado.

(Utilize os comandos DATA, SET e BY)

OBS: Lembre-se os arquivos devem estar ordenados pela variável comum.

3 - Monte um programa que gere um arquivo SAS (JUSTA) que será a justaposição ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma variável comum CIC. Gere um relatório com os dados do arquivo JUSTA para visualizar os resultados.

(Utilize os comandos DATA, MERGE e BY)

OBS: Lembre-se os arquivos devem estar ordenados pela variável comum.

Page 114: Apostila Sas II

114

20 - BIBLIOGRAFIA MANUAIS:

SAS Introductory Guide SAS Institute Inc. SAS Circle, Cary - NC Terceira Edição

SAS Language Version 9

SAS Institute Inc. SAS Circle, Cary - NC

SAS Procedures Guide Version 9

SAS Institute Inc. SAS Circle, Cary - NC

SAS Guide to TABULATE Processing

SAS Institute Inc. SAS Circle, Cary - NC 1987 Edition

Curso de SAS/BÁSICO

Soft Consultoria