Você está na página 1de 111

Universidade Estadual de Campinas

Centro Nacional de Processamento de Alto Desempenho - So Paulo

Apostila de Treinamento:

SAS Programao I
- Introduo ao SAS: Data Step e Proc Step -

Reviso: 2010

CONTEDO
1 - HISTRICO 2 - CURIOSIDADES 3 - DEFINIO BSICA 4 - COMERCIALIZAO
4.1 - Mdulos SAS 4.2 - Soluo de Negcios pag.05 pag.05 pag.06 pag.07 pag.07 pag.08 pag.09 pag.10 pag.11 pag.12 pag.13 pag.14 pag.14 pag.21 pag.22 pag.22 pag.24 pag.25 pag.26 pag.27 pag.28 pag.29 pag.30 pag.31 pag.33 pag.34 pag.35 pag.36 pag.36 pag.37 pag.37 pag.38 pag.38 pag.39 pag.41 pag.43 pag.46 pag.47 pag.47 pag.49 pag.50 pag.53 pag.54 pag.55 pag.56 2

5 - CONCEITOS BSICOS 6 - ARQUIVOS SAS 7 - ESTRUTURA DOS ARQUIVOS SAS 8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS 9 - SINTAXE DOS COMANDOS 10 - EXECUO
10.1 - Modo Interativo (Ambiente WINDOWS) 10.2 - Modo No Interativo (Ambiente de COMANDOS)

11 - ESTRUTURA DATA STEP


11.1 - Introduo 11.2 - Comando LIBNAME 11.3 - Comando DATA 11.4 - Comando INFILE 11.5 - Comando SET 11.6 - Comando INPUT 11.6.1 - INPUT COLUNADO 11.6.2 - INPUT FORMATADO 11.6.3 - Descrio de um Campo Data 11.6.4 - Controles Especiais do Comando INPUT 11.6.5 - Detalhes do Comando INPUT 1 LABORATRIO

12 ESTRUTURA PROC STEP


12.1 - Introduo 12.1.1 - Comando VAR 12.1.2 - Comando BY 12.1.3 - Comando TITLE 12.1.4 - Comando FOOTNOTE 12.2 - Procedimento PRINT 12.3 - Procedimento SORT

13 - ARQUIVO DE MENSAGENS - "SAS Log"


2 LABORATRIO

14 - COMANDOS BSICOS DE PROGRAMAO SAS


14.1 - Comando de Atribuio (=) 14.2 - Comando RETAIN 14.3 - Comando IF-THEN/ELSE 14.4 - Comando WHERE 14.5 - Comando DO/END 14.6 - Comando LENGTH 14.7 - Comando DO/END Iterativo

14.8 - Comando DO/WHILE 14.9 - Comando DO/UNTIL 14.10 - Comandos DROP e KEEP 14.11 - Opes de Arquivos SAS 14.12 - Comando DELETE 14.13 - Comando OUTPUT 3 LABORATRIO

pag.57 pag.58 pag.59 pag.60 pag.61 pag.62 pag.64 pag.67 pag.67 pag.68 pag.68 pag.68 pag.69 pag.70 pag.70 pag.71 pag.73 pag.73 pag.73 pag.75 pag.75 pag.75 pag.77 pag.77 pag.77 pag.78 pag.78 pag.78 pag.80 pag.81 pag.83 pag.84 pag.85 pag.87 pag.87 pag.90 pag.95 pag.100 pag.101 pag.101 pag.103 pag.104 pag.104 pg.106 pg.108 pag.110 pag.111

15 - FUNES DO SAS
15.1 - Introduo 15.2 - Funes de Tratamento de Caractere 15.2.1 - Funo UPCASE 15.2.2 - Funo LOWCASE 15.2.3 - Funo SUBSTR 15.2.4 - Funo COMPRESS 15.2.5 - Funo LENGTH 15.2.6 - Funo INDEX 15.3 - Funes de Truncamento 15.3.1 - Funo INT 15.3.2 - Funo ROUND 15.4 - Funes Estatsticas Descritivas 15.4.1 - Funo SUM 15.4.2 - Funo MEAN 15.5 - Funes de Tratamento de Data e Hora 15.5.1 - Funo MDY 15.5.2 - Funes: DAY, MONTH, YEAR 15.5.3 - Funo TODAY 15.5.4 - Funo TIME 15.5.5 - Funes: HOUR, MINUTE, SECOND 4 LABORATRIO

16 - COMANDOS DE CONFIGURAO
16.2 - Comando LABEL 16.3 - Comando FORMAT 16.4 - Comando ODS

17 - PROCEDIMENTOS ESTATSTICOS BSICOS


17.1 - Procedimento MEANS 17.2 - Procedimento FREQ 17.3 - Procedimento TABULATE 5 LABORATRIO

18 - RECURSO DE FORMATAO ESPECIAL


18.1 - Procedimento FORMAT 6 LABORATRIO

19 - COMBINAO DE ARQUIVOS SAS


19.1 - Concatenao 19.2 - Concatenao Ordenada 19.3 - Combinao Ordenada 7 LABORATRIO

20 - BIBLIOGRAFIA

Tipografia utilizada na apostila


Na apresentao de alguns comandos do SAS, foram utilizados smbolos grficos que identificam, na sintaxe do comando, a caracterstica de ser opcional ou obrigatrio:

< caracterstica > [ caracterstica ]

obrigatrio a informao no comando; opcional a informao no comando.

Exemplo: Utilizao de procedimentos SAS

PROC <tipo> [opo1 opo2 opo3 . . . opon] ; [comando1] ; [comando2] ; [WHERE <expresso lgica>] ; ... [comandon] ; RUN ;

1 - HISTRICO

Dcada de 60; North Caroline University; Censo Agro-pecurio Norte-americano; Conjunto de sub-rotinas (FORTRAN, IBM/370); SAS Institute Inc. (1975);

2 - CURIOSIDADES
http://www.sas.com http://v9doc.sas.com 45.000 Instalaes, em 118 paises; 92 das 100 maiores empresas do mundo utilizam SAS. (Fortune 500 Global List - 2009); Receita Bruta em 2009 - $2,31 bilhes; 2009 11.000 funcionrios em mais de 50 paises; SAS a maior empresa de software do mundo de capital privado; Idiomas: Chins, Francs, Alemo, Hebreu, Italiano, Japons, Russo, Espanhol, Polons, Hngaro, Sueco, Coreano, etc.
5

3 - DEFINIO BSICA O SAS um software integrado para anlise de dados, que consiste de vrios produtos que permitem: - Recuperao de dados; - Gerenciamento de arquivos; - Anlise estatstica; - Acesso a Banco de Dados (ORACLE, DB2, etc); - Gerao de grficos; - Gerao de relatrios; - Gerao de aplicativos; - Solues de negcios (Anlise 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 )
6

4 - COMERCIALIZAO 4.1 - Mdulos do SAS SAS/BASE Mdulo bsico, instalao; Mdulo estatstico; Mdulo grfico ( Histogramas, plots, ... ); Mdulo de anlise e pesquisa operacional (Programao linear, Anlise de Caminho Crtico); Mdulo para qualidade; anlise de controle de obrigatrio em toda

SAS/STAT SAS/GRAPH SAS/OR

SAS/QC

SAS/ETS

Mdulo de econometria (Sries Temporais, Modelagem de Equaes Simultneas); Mdulo para anlise e operao de matrizes; Mdulo para acesso aos diversos tipos de Banco de Dados; ambientes

SAS/IML SAS/ACCESS

SAS/CONNECT Mdulo para conexo entre operacionais heterogneos; SAS/AF SAS/FSP

Mdulo para desenvolvimento de aplicaes; Mdulo para facilitar o acesso a arquivos com programao de telas;
7

4.2 - Soluo de Negcios

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

5 - CONCEITOS BSICOS

DATA SET

Arquivo de dados com estrutura SAS;

OBSERVAO

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

Diviso lgica de um programa SAS, no qual se cria e altera um, ou vrios arquivos SAS ( Data Set's );

PROC STEP

Diviso lgica 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 construda em torno de quatro idias bsicas no tratamento de dados: Acessar dados; Administrar dados; Analisar dados; Apresentar dados;

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 ).

DADO BRUTO

DATA STEP

DADO SAS

Os arquivos SAS podem ser temporrios ( armazenados em uma biblioteca definida pelo SAS - WORK) ou permanentes (bibliotecas definidas pelos usurios).

Em um nico programa SAS (Job SAS), vrios arquivos podem ser abertos e analisados.

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

10

7 - ESTRUTURA DOS ARQUIVOS SAS


O arquivo SAS um conjunto de dados organizados num formato de tabela.
NOME CARLOS GILBERTO RICARDO . . . . . . ALICE MARCIA SEXO IDADE M M M . . . F F 12 25 30 . . . 28 22 ALTURA 1.70 1.65 1.80

1.68 1.75

As colunas nas tabelas so chamadas de variveis: - Variveis correspondem aos campos de dados; - Cada varivel recebe um nome; - Para o SAS, s existem dois tipos de variveis: caractere (at 32.768 caracteres 32.768 Bytes) numrica (Representao IEEE - 8Bytes) As linhas na tabela so chamadas de observaes (ou registros). No existe limite para o nmero de observaes. Um Arquivo SAS dividido em duas partes: Descritora Contm a descrio do arquivo: Tamanho do arquivo,
nmero de registros, nome, tipo, tamanho e formato de variveis, etc;

Dados

Contm os dados do arquivo.

11

8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS

Todos os nomes de arquivos e variveis devero seguir as seguintes regras:

- Possuir de 1 32 caracteres;
-

Comear com letra (A-Z);

- Pode continuar com nmeros, letras ou o caractere especial, grifo ou sublinhar _.

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

12

9 - SNTAXE DOS COMANDOS

Todo comando SAS comea com uma palavra-chave (identificao), e termina com o ponto e virgula (;).

- Os comandos podem comear e terminar em qualquer parte da linha;

- Um comando pode se estender por diversas linhas;

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

13

10 - EXECUO Um programa SAS pode ser executado de trs maneiras diferentes: - Modo interativo (Ambiente Windows); - Modo no 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)

14

15

JANELA DE OPES DE CONFIGURAO Tools ==> Options ==> System...

16

17

OPES DE CONFIGURAO DO EDITOR Tools ==> Options ==> Enhanced Editor...

18

19

CONFIGURAO DE TECLADO Tools ==> Options ==> Keys

20

10.2 - Modo No Interativo (Ambiente de COMANDOS)

uma maneira simples e rpida de execuo 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 diretrio do programa SAS, sero gerados dois arquivos com o mesmo nome do programa: <programa>.lst <programa>.log Possui os resultados do programa; Possui mensagens da execuo do programa.

OBS: Sempre analise o arquivo com extenso log. Se no for criado o arquivo com a extenso lst, com certeza existiro erros no programa, que podero ser identificados no arquivo log.

21

11 - ESTRUTURA DATA STEP 11.1 - Introduo


- a seo de um programa SAS, aonde se organizam e administram os dados, utilizando comandos de programao do SAS/BASE e alguma lgica de processamento. - A maioria dos comandos utilizados em DATA Step, s existem e s podem ser executados nessa seo; - Os comandos so posicionados em uma seqncia lgica, ou seja, a execuo de um determinado comando, pode depender da execuo do comando anterior (lgica de processamento); - Os arquivos processados em um DATA Step, normalmente, so processados de maneira seqencial, ou seja, registro aps 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 prximo Step; - A execuo de um programa SAS obedece a duas fases internas: Compilao e Execuo; - Os comandos em um DATA Step, podem ser divididos em:
Comandos de Declarao Comandos de Execuo -Funcionalidade: durante a compilao; -Funcionalidade: durante a execuo.

OBS: Comandos de declarao no possuem nenhuma ao durante a execuo.

22

Fluxo de Execuo
Inicio do DATA Step

Abrir arquivo para gravar

Abrir arquivo para leitura

Ler novo registro

processa registro

Salvar registro no arquivo para gravaao

NAO

Ultimo registro

SIM Fim do DATA Step

23

11.2 - Comando LIBNAME


- Tipo: Comando de declarao; - Uso: Livre; - Comando opcional de configurao do processamento, que define uma ou mais reas de trabalho e armazenamento (bibliotecas), para os arquivos SAS (Data Set's); - O nome de um arquivo SAS composto por duas partes, separadas por .: A primeira parte opcional, a biblioteca, a segunda parte obrigatria, o nome do arquivo. [biblioteca].<nome do arquivo> - O comando LIBNAME, normalmente, colocado antes do comando DATA, e s ser necessrio ser executa-lo uma nica vez durante uma sesso SAS WINDOWS. LIBNAME <biblioteca> "<diretrio>" ; biblioteca diretrio
Palavra de no mnimo 1 e no mximo 8 caracteres, que ser utilizado na primeira parte, em um nome de arquivo. Nome de um diretrio que j exista no seu ambiente entre aspas.

OBS: O SAS define uma biblioteca padro, temporria, de nome work, que ser utilizada automaticamente se no for especificada a primeira parte do nome do arquivo. 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 VAR NOME ENDERECO ; RUN ; NOOBS ; 24

11.3 - Comando DATA


- Tipo: Comando de declarao; - Uso: Data Step; - Comando que sempre inicia um DATA Step; - Abre um novo arquivo DATA Set, vazio, em uma biblioteca SAS.

DATA <biblioteca>.<nome do arquivo> ;

Ex.4:
DATA DATA DATA DATA ; DATA _NULL_; ENDERECO ; ARQ1 ARQ2 ARQ3 ;

ENT.CADASTRO ;

OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir utilizar a biblioteca padro, tambm chamada de biblioteca temporria (WORK ).

25

11.4 - Comando INFILE


- Tipo: Comando de execuo; - Uso: Data Step; - Comando que identifica e abre um arquivo externo de dados, somente para leitura (no um arquivo no formato do SAS); - Normalmente um arquivo de dados no formato texto (somente texto); - Este comando deve ser posicionado aps o comando DATA e antes do comando INPUT. INFILE "<arquivo de dados>" [opes] ; Opes: 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 varivel;

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

26

11.5 - Comando SET


- Tipo: Comando de execuo; - 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 incio de um Data Step, para permitir ao compilador ler a estrutura do arquivo especificado e armazen-la na memria.

SET <biblioteca>.<nome do arquivo>;

Ex.6:
DATA EXEMPLO ; SET CADASTRO ; . . . . . . . . .

OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir utilizar a biblioteca padro, tambm chamada de biblioteca temporria (WORK ).

27

11.6 - Comando INPUT


- Tipo: Comando de execuo; - Uso: Data Step; - O comando INPUT serve para descrever ao SAS como esto 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 contedo;

- O comando INPUT ir ler registro a registro (leitura seqencial) at encontrar um registro especial que identifica o "fim de arquivo (EOF)", e ir atribuir nomes (Variveis) para cada campo de um registro;

- Dois tipos bsicos de comando INPUT, so os mais utilizados:

- INPUT COLUNADO - INPUT FORMATADO

28

11.6.1 - INPUT COLUNADO - L os campos de dados, atribuindo-lhes um nome, e especificando a sua posio inicial e final na linha de dados do arquivo. Os campos de dados devem estar alinhados, fixos em colunas, no arquivo. INPUT <varivel> [$] <incio>-<fim>
varivel $ Nome do campo de dados. Caractere opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica. Valor que indica a posio inicial da varivel na linha de dados. Valor que indica a posio final da varivel na linha de dados. Valor opcional, indica o nmero de posies decimais de uma varivel numrica.

[.decimal] ;

incio

fim

.decimal

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

C C S M

A A I A

R R L R

L L V C

O A I I

M F

1 2 2 3

8 6 1 2

1 1 1 1

7 7 6 8

0 8 5 2

6 7 6 8

8 2 0 5

. . . .

0 0 5 4

A O

F M

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

29

11.6.2 - INPUT FORMATADO - L os campos de dados, atribuindo-lhes um nome, e especificando o tamanho do campo, ou, um formato especfico, para interpretar o dado contido na linha de dados. - o tipo de INPUT mais poderoso e completo do SAS. INPUT <varivel> [$] < w.d > ou [ formatow.d ] ;
varivel $ Nome do campo de dados. Caractere opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica. Valor que indica o tamanho de um campo na linha de dados. O ponto no final obrigatrio. Valor que indica o tamanho de um campo numrico com casas decimais. Interpretao do campo. Nome de um formato especial de leitura dos dados: L campo numrico no formato binrio e o converte para decimal; COMMAXw.d L campo numrico com vrgula e a troca por ponto; Ew.d L campo numrico com notao cientfica; HEXw. L campo numrico em hexadecimal; DDMMYYw. L campo no formato padro de datas dd/mm/yyyy.
BINARYw.d

w.

w.d

formatow.d

30

11.6.3 - Descrio de um Campo Data - Campos que representam datas necessitam que sejam identificados pelo SAS atravs de um formato de leitura, e armazenados como numricos; - O valor numrico armazenado representa o nmero de dias em relao a uma data base SAS.

- um campo que obrigatoriamente deve ser lido com um formato de leitura para identificar a formatao da data. Formatos: DATE9. DDMMYY10. ==> 01JAN1960 ==> 01/01/1960

Formato padro de uma constante data no SAS: "ddmmyyyy"d "01JAN1960"d


31

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

C C

A A

R R

L L

O A

M F

1 2

8 6

1 1

7 7

0 8

6 7

8 2

. .

0 0

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

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 S

J P

2 1

0 1

4 5

5 0

6 0

3 0

0 0

0 0

6 9

, ,

7 4

3 6

9 4

, ,

9 2

9 6

2 5

8 6

8 C

F C

1 1

. 2

2 5

E E

5 5

DATA EXEMPLO2 ; INFILE "A:\NUMEROS.PRN"; INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ; RUN; PROC PRINT ; RUN ;
The SAS System Obs 1 2 UF RJ SP CEP 20456300 11500000 POP 6739992 9464265 VALOR1 2191 1740 VALOR2 120000 12500000

32

11.6.4 - Controles Especiais do Comando INPUT Indicador de COLUNA ( @ )

@n

Move a leitura para a coluna n ;

Indicador de LINHA ( / )

/
Ex.10:
1 2 3 4 5 6 7 8

Avana a leitura em um registro;

10

11

12

13

14

15

16

17

18

19

20

1 D E 2 d e

1 D E 2 d e

1 D E 2 d e

1 D E 2 d e

F 2

F b b b b c c c c

DATA POSICAO ; INFILE "C:\SAS\POS.DAT" ; INPUT A $ 1-5 @10 B $ 4. @17 C $ 4. / D $ 1-4 / E $ 4. @8 F $ 2. ; RUN; PROC PRINT ; RUN ;
The SAS System OBS 1 2 A 11111 22222 B BBBB bbbb C CCCC cccc D DDDD dddd E EEEE eeee F FF ff

33

11.6.5 - Detalhes do Comando INPUT


- Em campos numricos, no so permitidos "brancos" entre os nmeros; - Sinal (+ - ), ponto decimal (.) e notao cientfica para expoente ( E ), so permitidos em campos numricos; - Campos tipo caractere podem ter, no mximo, 32.768 caracteres; - So permitidos caracteres "brancos", em qualquer posio, em campos do tipo caractere; - Campos em branco (sem informao) so considerados como "missing value" (valor perdido). O SAS ir armazenar o caractere branco, em campos caracteres, e o caractere ponto, em campos numricos; - Os campos de um registro de dados podem ser lidos em qualquer ordem.
INPUT PESO 17-20 NOME $ 1-8 IDADE 11-12 SEXO $ 9 ;

- Campos ou partes de um campo podem ser relidos.


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

- Dados caracteres sero armazenados alinhados pela esquerda, e os dados numricos, alinhados pela direita; - Todos os tipos de INPUT, podem ser combinados num nico comando INPUT;

Ex.11: Detalhes de leitura com nomes repetitivos


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.) ;

34

1 LABORATRIO
Montar um programa SAS que leia um arquivo de dados externo (no SAS) e gere um arquivo no formato SAS (Data Set), permanente. 1- Criar um arquivo SAS, permanente, de nome CADASTRO, no diretrio c:\curso\sas (Utilize os comandos LIBNAME e DATA ); 2 - Abra o arquivo de dados externo de nome CADASTRO.DAT no diretrio 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 contedo do arquivo est dividido em diversos campos na seguinte ordem:
Nome do Campo NOME SEXO IDADE PESO ALTURA ANIVERSARIO ESTADO CIVIL FILHOS RG CPF EMPRESA FUNCAO ADMISSAO SALARIO Tipo do Campo Caractere Caractere Numrico Numrico Numrico Numrico Caractere Numrico Caractere Caractere Caractere Caractere Numrico Numrico Tamanho do Campo 30 1 2 6 4 10 1 2 15 11 15 12 9 12 2 2 2 Decimais Posio Inicial 1 31 32 34 40 44 54 55 57 72 83 98 110 119 Campo formatado: Ex 18JAN2005 Campo formatado: Ex. 3.548,25 Campo formatado: Ex. 18/01/2005 Detalhe

4 - Releia parte do campo EMPRESA, na posio 89, defina a varivel TIPO DE EMPRESA, com 9 caracteres; 5 - Gere um relatrio com os resultados da leitura do arquivo de dados, com os comandos abaixo: PROC PRINT;RUN; OBS: Salve os seus programas! Faa-o sempre, no diretrio c:\curso\sas
35

12 - ESTRUTURA PROC Step 12.1 - Introduo


- a seo de um programa SAS aonde se analisam os dados de um arquivo SAS, utilizando-se procedimentos especficos para cada tipo de anlise. - A maioria dos procedimentos SAS, geram relatrios tcnicos; - Todos os procedimentos iniciam com a palavra PROC seguida do nome especfico do procedimento ou rotina desejada; - Os comandos em uma PROC no seguem uma seqncia lgica, ou seja, podem ser colocados em qualquer ordem dentro da PROC; PROC <rotina> [opes] ; [comando1] ; [comando2] ; ... [comandon] ; RUN ; rotina Palavra-chave que identifica o procedimento a ser executado. Parmetros opcionais de configurao para execuo do procedimento. Comandos de procedimento. detalhamento na execuo do

opes

comando

RUN

Comando para execuo do procedimento SAS. Necessrio no ltimo procedimento do programa SAS.

36

12.1.1 - Comando VAR


- Tipo: Comando de declarao; - Uso: Proc Step - Comando comum maioria das PROCS. Especifica uma lista de variveis do arquivo SAS, que sero processadas pelo procedimento.

VAR <varivel1> <varivel2> ...<variveln> ;

12.1.2 - Comando BY
- Tipo: Comando de declarao; - Uso: Data Step e Proc Step; - Especifica uma lista de variveis que permitiro o processamento em grupos;

BY <varivel1> <varivel2> ...<variveln> ;

OBS: Este comando exige que o arquivo esteja ordenado ou indexado pelas variveis especificadas.

37

12.1.3 - Comando TITLE


- Tipo: Comando de declarao; - Uso: Livre; - Pode ser codificado em qualquer parte do programa. Determina de 1 at 10 ttulos para o relatrio a ser gerado pelo procedimento. TITLE "<cabealho>" ; TITLE1 "<cabealho>" ; ... TITLE10 "<cabealho>" ; OBS: Um ttulo permanece ativo at que seja modificado, ou eliminado com o comando: TITLE;

12.1.4 - Comando FOOTNOTE


- Tipo: Comando de declarao; - Uso: Livre; - Pode ser codificado em qualquer parte do programa. Determina de 1 at 10 rodaps para o relatrio 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;

38

12.2 - Procedimento PRINT


- Procedimento do SAS que imprime, na sada padro, os dados contidos nos arquivos SAS; - A sada padro , normalmente, a janela OUTPUT, em uma sesso SAS Windows. PROC PRINT [opes] ; VAR <lista de variveis> ; BY <lista de variveis> ; SUM <lista de variveis> ;
opes DATA= DOUBLE NOOBS Nome do arquivo SAS; Espacejamento duplo; Suprime a coluna com o nmero de cada observao do arquivo; Imprime uma "descrio", das variveis; Insere uma linha em branco a cada n linhas de dados;

LABEL BLANKLINE= n

VAR

Especifica uma lista de variveis que sero impressas; Especifica a quebra ou agrupamento do relatrio, por uma ou mais variveis; Especifica uma ou mais variveis numricas que sero totalizadas;

BY

SUM

39

Ex.12:
TITLE "Relatrio de Funcionrios" ; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;

Relatrio de Funcionrios nome Raul Marcelo Paula Renato Carlos Leticia Silvio Celso Sandra funcao Analista Analista Analista Analista Programador Programador Programador Operador Operador

Ex.13:
TITLE "Relatrio de Salrios" ; FOOTNOTE " FONTE: DH " ; PROC PRINT DATA=EXEMPLO1 ; VAR NOME FUNCAO SALARIO ; SUM SALARIO ; RUN ;
Relatrio de Salrios Obs 1 2 3 4 5 6 7 8 9 nome Raul Marcelo Paula Renato Carlos Leticia Silvio Celso Sandra funcao Analista Analista Analista Analista Programador Programador Programador Operador Operador salario 5688.35 4596.96 4978.05 3800.88 3544.45 3845.30 2998.38 1587.00 1500.00 ======== 32539.37

FONTE: DH

40

12.3 - Procedimento SORT - Procedimento do SAS que reordena os registros dos arquivos por uma ou mais variveis, em ordem ascendente ou descendente; - No possui sada impressa; - Pode gerar arquivo ordenado.

PROC SORT [opes] ; BY <lista de variveis> ;


opes Nome do arquivo SAS para ser ordenado; Nome do arquivo SAS, aonde sero armazenado os dados ordenados. Se no for utilizada essa opo, a ordenao ser feita em cima do arquivo original;

DATA= OUT=

NODUPKEY Opo que elimina os registros com chaves

duplicadas; DUPOUT= Nome para arquivo que ir armazenar os registros duplicados; BY Especifica uma ou vrias variveis como chaves de ordenao;

OBS: A ordenao sempre feita na ordem ascendente. Para ordenar na ordem descendente necessrio colocar o parmetro descending, antes da varivel a ser ordenada no comando BY.

41

Ex.14:
PROC SORT DATA=EXEMPLO1 OUT=ORDENA ; BY FUNCAO ; RUN ; PROC PRINT DATA=ORDENA NOOBS ; BY FUNCAO ; VAR NOME SALARIO ; SUM SALARIO ; RUN ;
Relatrio de Salrios ------------------------ funcao=Analista -----------------------nome Raul Marcelo Paula Renato ------funcao salario 5688.35 4596.96 4978.05 3800.88 -------19064.24

------------------------ funcao=Operador -----------------------nome Celso Sandra -----funcao salario 1587 1500 ------3087

---------------------- funcao=Programador ----------------------nome Carlos Leticia Silvio ------funcao salario 3544.45 3845.30 2998.38 -------10388.13 ======== 32539.37

FONTE: DH

42

13 - ARQUIVO DE MENSAGENS - "SAS Log"


- Ao se executar um programa SAS, gerado um relatrio de mensagens com notificaes e erros da execuo do programa (janela LOG). - Muito til, deve ser sempre analisado, principalmente quando no aparecer o relatrio com os resultados na janela OUTPUT, ou quando esse relatrio aparecer com problemas. Ex.15:
DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $12 23 SALARIO 25 31 ; 12-23 25-31 1 8 10 12 RUN; RUN PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; NOTE: Copyright (c) 2002-2008 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software 9.2 (TS2M0) Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS Site 70005173. CAMPINAS, NOTE: This session is executing on the XP_PRO platform. NOTE: SAS initialization used: real time 1:13.65 cpu time 1.03 seconds 1 2 3 4 DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ; RUN;

NOTE: The infile "D:\kusel\cursos\sas\DADOS.TXT" is: Filename=D:\kusel\cursos\sas\DADOS.TXT, RECFM=V,LRECL=256,File Size (bytes)=297, Last Modified=06 de Agosto de 2010 14h47min2, Create Time=06 de Agosto de 2010 14h39min0 NOTE: "D:\kusel\cursos\sas\ NOTE: 9 records were read from the infile "D:\kusel\cursos\sas\DADOS.TXT". The minimum record length was 31. The maximum record length was 33. NOTE: The data set WORK.EXEMPLO1 has 9 observations and 4 variables. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds 5 6 7 PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;

NOTE: There were 9 observations read from the data set WORK.EXEMPLO1. NOTE: PROCEDURE PRINT used (Total process time): real time 0.03 seconds cpu time 0.03 seconds

43

Ex.16:
DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;
DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ; 22 76 22constant, ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (. 76ignored. ERROR 76-322: Syntax error, statement will be ign 25 RUN; 22 23 24

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 observations 0 observations and 3 variables. WARNING: Data set WORK.EXEMPLO1 was not replaced because this step was stopped. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds

PROC PRINT DATA=EXEMPLO1 NOOBS VAR NOME FUNCAO ; --22 202 22ERROR 22-322: Syntax error, expecting one of the following: ;, BLANKLINE, DATA, DOUBLE, SUMLABEL, HEADING, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLIT, STYLE, SUMLABEL, UNIFORM, WIDTH. 202ERROR 202-322: The option or parameter is not recognized and will be ignored. 28 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used (Total process time): time real time 0.00 seconds cpu time 0.00 seconds

26 27

44

Ex.17:
DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO SALARIO; SUM SALARIO; RUN ;
45 46 47 48 DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ; $25RUN;

NOTE: The infile "D:\kusel\cursos\sas\DADOS.TXT" is: Filename=D:\kusel\cursos\sas\DADOS.TXT, RECFM=V,LRECL=256,File Size (bytes)=321, Last Modified=06 de Agosto de 2010 15h07min0, Create Time=06 de Agosto de 2010 14h39min0 NOTE: 10 records were read from the infile "D:\kusel\cursos\sas\DADOS.TXT". The minimum record length was 22. The maximum record length was 33. NOTE: SAS went to a new line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXEMPLO1 has 9 observations and 4 variables. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds

49 PROC PRINT DATA=EXEMPLO1 NOOBS ; 50 VAR NOME FUNCAO salario; ERROR: Variable FUNCAO not found. 51 sum salario; ERROR: Variable SALARIO in list does not match type prescribed for this list. 52 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

45

2 LABORATRIO
Manipular os procedimentos de impresso e ordenao. Utilizando o arquivo SAS gerado no laboratrio anterior, monte programas SAS que: 1 - Gere um relatrio: - com as variveis: NOME, EMPRESA, FUNCAO e SALARIO; - dever ter espacejamento DUPLO; - no poder aparecer a coluna com o nmero de registros ( OBS ); ( Utilize o procedimento PRINT ) 2 - Gere: - um arquivo SAS permanente ordenado por EMPRESA; - um relatrio com todos os dados, relacionados por EMPRESA; (Utilize os procedimentos SORT e PRINT) 3 - Utilizando o arquivo ordenado do item anterior: - gere um relatrio por EMPRESA; - com os dados: NOME, FUNCAO e SALARIO; - faa um somatrio da varivel SALARIO; - Insira uma linha em branco a cada 3 linhas de dados; - coloque o ttulo "Relatrio de Salrios por Empresa"; - coloque o rodap "FONTE: Fundao Getlio Vargas"; ( Utilize o procedimento PRINT) 4 - Utilizando o arquivo SAS CADASTRO, gerado no laboratrio anterior, crie um programa SAS que emita um relatrio com as variveis: 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 relatrio que: - esteja ordenado por EMPRESA; - com as variveis: NOME, EMPRESA e SALARIO; - tenha espacejamento DUPLO; - sem ttulo algum; - com o somatrio da varivel SALARIO; 6 - Utilizando o arquivo SAS CADASTRO, gere um relatrio com apenas os funcionrios que mais ganham de cada empresa, e apenas um funcionrio de cada funo da empresa.
1 - Primeiro passo: - Execute um PROC SORT, por EMPRESA, FUNCAO e ordem descendente de SALARIO; - Verifique os resultados com a PROC PRINT, com as variveis: NOME, EMPRESA, FUNCAO, SALARIO; 2 - Segundo passo: - Execute um novo PROC SORT, mas gerando um NOVO ARQUIVO temporrio, por EMPRESA e FUNCAO; - Elimine as duplicatas de EMPRESA e FUNCAO, desse novo arquivo; - Verifique os resultados com a PROC PRINT e as variveis: NOME, EMPRESA, FUNCAO, SALARIO; - Verifique se os resultados esto de acordo como o que foi solicitado no enunciado do exerccio.

46

14 - COMANDOS BSICOS DE PROGRAMAO SAS


14.1 - Comando de Atribuio (=)
- Tipo: Comando de execuo; - Uso: Data Step; - Comando caractere utilizado para criar novas variveis e editar as j existentes em um Data Step. <varivel> = <expresso> ; varivel expresso Nome com no mximo 32 caracteres. Expresses do tipo:

- Operaes aritmticas simples: + - * / ** x2=x ; soma=x+y ; dif=x-y ; dobro=x*2 ; met=x/2 ; cubo=x**3 ; y=-x ; - Constantes : N=0 ; Constante numrica; SEXO="F" ; Constante caractere; Move valor; Adio; Subtrao; Multiplicao; Diviso; Potenciao; Mudana de sinal;

- Concatenao de caracteres : || A=PAULO || ANTUNES; ==> B=PAULO || || ANTUNES; ==> - Prioridade de execuo em expresses aritmticas: 1- O operador com maior prioridade, executado primeiro. 2- Se os operadores possurem a mesma prioridade, ser executado o que vier primeiro, da esquerda para direita: ( ) funo ** */ +=========================> A=X+Y+Z ; A=X+Y*Z ; A=X/(Y/Z) ; - Funes: S=SQRT(X) ; A=INT(X) ; Z=ABS(SQRT(X)-2) ; A=PAULOANTUNES B=PAULO ANTUNES

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 9 9

4 5 6

5 6 8

6 2 4

5 8 5

0 0 0

1 1 2

0 1 4

5 4 5

0 0 0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ; TITLE "Analise Contbil" ; VAR ANO RECEITA DESPESAS LUCRO DOLLAR ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ;
Analise Contbil ANO 1994 1995 1996 RECEITA 5650 6280 8450 ======= 20380 DESPESAS 1050 1140 2450 ======== 4640 LUCRO 4600 5140 6000 ===== 15740 DOLLAR 4693.88 5244.90 6122.45 ======== 16061.22

48

14.2 - Comando RETAIN


- Tipo: Comando de declarao; - Uso: Data Step; - Normalmente o SAS inicia todas as variveis criadas no DATA Step, com o valor missing, a cada iterao do DATA Step; - O Comando RETAIN define uma varivel com um valor inicial, e determina que ela no seja reinicializada a cada iterao do DATA Step; - Deve ser posicionado sempre antes do comando que ir utilizar a varivel definida;

RETAIN <varivel> [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 Contbil" ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ;
Analise Contbil CONT 1 2 3 ANO 1994 1995 1996 RECEITA 5650 6280 8450 ======= 20380 DESPESAS 1050 1140 2450 ======== 4640 LUCRO 4600 5140 6000 ===== 15740 DOLLAR 4693.88 5244.90 6122.45 ======== 16061.22

49

14.3 - Comando IF-THEN/ELSE - Tipo: Comando de Execuo; - Uso: Data Step; - Comando que condiciona a execuo de um outro comando SAS, de acordo com alguma expresso, que determinar essa condio; - Se a expresso, que determina a condio, for verdadeira, ser executado o comando que vier aps o THEN. Se a condio for falsa, ser executado o comando que vier aps o ELSE. Somente um comando aps o THEN e do ELSE IF <expresso> [THEN] <comando> ; [ELSE] <comando> ;

expresso Combinao de variveis com operadores de comparao e/ou operadores lgicos que determinam uma condio. comando Comando do SAS que ser executado de acordo com o resultado da condio. Operadores de Comparao GT LT EQ LE GE NE NL NG IN > < = <= >= ~= maior que menor que igual a menor ou igual a maior ou igual a no igual (diferente) no menor no maior est no conjunto Operadores Lgicos AND & e, ambos OR | ou, um ou outro NOT ~ no, negao

50

Ex.20: S o comando IF
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;

Ex.21: Operador de Comparao


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" Arquivo: NOTAS.TXT
01 02 03 04 05 06 07 08 09 10 11

; ; ; ; ;

RUN;

V L P C L

I I A L U

V D U A I

I I L U Z

A A O D

2 9 6

. . . . .

5 5 8 8 5

6 5

PROC PRINT NOOBS ; RUN;


The SAS System NOME VIVIANE LIDIA PAULO CLAUDIO LUIZ NOTA 2.5 9.5 6.8 6.8 5.5 CONCEITO A A A A 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" ;
The SAS System NOME VIVIANE LIDIA PAULO CLAUDIO LUIZ NOTA 2.5 9.5 6.8 6.8 5.5 CONCEITO E A C C C

RUN;

51

Ex.22: Operador Lgico


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 F M L

A L A U

U A R I

L V C S

A I O A S

1 1 2 2

1 1 1 1

1 5 1 4

1 1 1 1

. . . .

6 6 6 6

0 5 0 0

PROC PRINT NOOBS ; VAR NOME CLASSE ; RUN ;


The SAS System NOME PAULA FLAVIA MARCOS LUIS CLASSE 100 300 200 300

Ex.23: Operador Lgico


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

52

14.4 - Comando WHERE;


- Tipo: Comando de execuo; - Uso: Data Step, Proc Step e Opo de arquivos; - Comando que possui como nica ao, selecionar registros se uma condio for verdadeira; - Comando WHERE no pode ser utilizado com variveis que esto sendo criadas no DATA Step por comandos de atribuio, ou pelo comando INPUT; - Alm dos operadores de comparao e lgicos do comando IF, existem alguns operadores especiais no WHERE. WHERE <expresso> ;
expresso Combinao de variveis com operadores de comparao, operadores lgicos e/ou operadores especiais, que determinam uma condio. Se for verdadeira, o registro selecionado, processado e salvo. Se for falso o registro descartado.

Alguns operadores especiais


BETWEEN-AND CONTAINS entre um e outro contm

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

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


53

14.5 - Comandos DO/END


- Tipo: Comando de execuo; - Uso: Data Step - Comando que define a execuo de um bloco de comandos do SAS; - Todos os comandos existentes entre o comando DO e o comando END, devero ser executados imediatamente; - Comandos DO e END podem ser usados para executar um grupo de comandos quando se encontra uma condio, normalmente, para ampliar o comando IF-THEN/ELSE.

IF <expresso> THEN DO; <comando1> ; <comando2> ; ... <comandon> ; 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 ; RUN; PROC PRINT NOOBS ; RUN ;
The SAS System NOME CARLOS ELIANE ALVARO FATIMA DEP_NO 201 101 101 201 COM 1500 . . 500 SALARIO 1500 1800 3800 1500 DEP VENDAS ADMINI ADMINI VENDAS SAL 3000 1800 3800 2000

54

14.6 - Comando LENGTH


- Tipo: Comando de declarao; - Uso: Data Step; - Comando que define uma varivel, o tipo e o tamanho em bytes. - Deve ser posicionado sempre antes da utilizao da varivel. LENGTH varivel [$] <tamanho> ... varivel [$] <tamanho> ;

varivel Nome da varivel que deseja definir; $ Caractere opcional, que indica que a varivel ser alfanumrica;

tamanho Tamanho, em bytes, da varivel.

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 ; RUN; PROC PRINT NOOBS ; RUN ;
The SAS System NOME CARLOS ELIANE ALVARO FATIMA DEP_NO 201 101 101 201 COM 1500 . . 500 SALARIO 1500 1800 3800 1500 DEP VENDAS ADMINISTRATIVO ADMINISTRATIVO VENDAS SAL 3000 1800 3800 2000

55

14.7 - Comando DO/END Iterativo


- Tipo: Comando de execuo; - Uso: Data Step; - Comando utilizado para repetir um grupo de comandos n vezes.

DO <ndice> = <incio> TO <fim> [BY] <passo> [WHILE/UNTIL] <(expresso)>;


ndice Varivel auxiliar que armazena o valor da contagem do "loop". Valor inicial do "loop". Valor final do "loop". Valor opcional que indica o incremento do "loop". Campo opcional que representa uma combinao de variveis que determinam uma condio para execuo do "loop". A expresso deve vir entre parnteses.

incio fim passo expresso

Ex.27: Iterativo
DO DO DO DO DO DO DO MES="JAN","FEV","MAR" ; (3 vezes) ;END; 3 I = 1 TO 120 ; (120 vezes) 120 ;END;

I = 1 TO 120 BY 2 ; (60 vezes) ;END; 60 I = 120 TO 1 BY -1 ; (120 vezes) ;END; 1 120 I = 1 TO 10 I = 2 TO 20 I = 10 TO 0 WHILE (X < Y) ; (10 vezes ou enquanto X < Y) ;END; 10

BY 2 UNTIL ((X/3)>Y) ; (10 vezes ou at (X/3)>Y) ;END; 3 10 3 BY -1 WHILE (MES="JAN");(11 vezes ou enquanto o MES=JAN);END; 1 11

56

14.8 - Comando DO WHILE


- Tipo: Comando de execuo; - Uso: Data Step; - Comando que repete um grupo de comandos enquanto uma expresso for verdadeira; - A expresso validada no incio do loop; - Se a expresso for falsa, os comandos dentro do loop nunca sero executados.

DO WHILE <(expresso)> ; <== ( Validao no incio ) ... END;


expresso Combinao de variveis que determina uma condio para a execuo do "loop", entre parnteses.

Ex.28:
DATA ; X=0; N=0; DO WHILE (N LE 5) ; <== ( Validao no incio. Executa 6 vezes ) X=X+N**2 ; N=N+1 ; END ; RUN; PROC PRINT;RUN; SAS System X 55 N 6

57

14.9 - Comando DO UNTIL


- Tipo: Comando de execuo; - Uso: Data step; - Comando que repete um grupo de comandos at a expresso ser verdadeira; - A expresso validada no fim do loop; - Se a expresso for falsa, os comandos dentro do loop sero executados, pelo menos, uma vez.

DO UNTIL <(expresso)> ; ... END;<== ( Validao no fim )


expresso Combinao de variveis que determina uma condio para a execuo do "loop", entre parnteses.

Ex.29:
DATA ; X=0; N=0; DO UNTIL (N GT 5) ; X=X+N**2 ; N=N+1 ; END ; <==( validao no fim. Executa 6 vezes ) RUN; PROC PRINT;RUN; SAS System X 55 N 6

58

14.10 - Comandos DROP e KEEP


- Tipo: Comandos de declarao; - Uso: Data step e Opo de arquivos; - O comando DROP, elimina as variveis de um arquivo SAS; - O comando KEEP, mantm as variveis em um arquivo SAS; - Pode ser posicionado em qualquer lugar de um Data Step; - Esses dois comandos so exclusivos, ou se usa o comando DROP, ou se usa o comando KEEP, na lgica de um programa SAS.

DROP <varivel> <varivel> . . . ; KEEP <varivel> <varivel> . . . ;


varivel Nome de uma varivel 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. ENDERECO $30. CEP $8. RG $10. CPF $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;
59

14.11 - Opes de Arquivos SAS


- Todos arquivos, com estrutura SAS, possuem opes de configurao que so especificados aps cada arquivo, entre parnteses; - So opes do arquivo, que tem sua ao vinculada ao comando no qual o arquivo est sendo especificado; - Normalmente quando se especifica um arquivo, a ao, ou ser de leitura dos dados, ou ser de gravao dos dados. <arquivo SAS> [( <opo1> <opo2> . . . <opon>)] ; Opes KEEP e DROP
<arquivo SAS> (DROP=<varivel> <varivel> . . ) ; <arquivo SAS> (KEEP=<varivel> <varivel> . . ) ; - Ao vinculada ao comando DATA (gravao de dados) DROP No grava KEEP Somente grava - Ao vinculada ao comando SET (Leitura de dados) DROP No leia KEEP Somente leia

Ex.31:
DATA CLASSE ; INFILE "C:\ALUNOS\CADASTRO.DAT" ; INPUT NOME $15. SEXO $1. ENDERECO $30. CEP $8. RG $10. CPF $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;
60

14.12 - Comando DELETE


- Tipo: Comando de execuo; - Uso: Data Step; - Comando que informa ao SAS, que deve ser parado o processamento do registro atual; no gravar os dados do registro no arquivo e retornar imediatamente para o incio do Data Step para uma nova iterao; - O objetivo do comando de no permitir a gravao do registro lido, no novo arquivo SAS; - Normalmente esse comando utilizado junto com o comando IF/THEN/ELSE, que determina uma condio para execuo do comando DELETE.

IF <expresso> 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 4 3 2 5

7 2 1 4

1 5

0 0 5 0 1

5 1

2 6 0

0 3

PROC PRINT NOOBS ; RUN ;


The SAS System DEP 17 31 5 UNIDADE 10 5 1 CUSTO 525 100 15 CUSTOUNI 52.5 20.0 15.0 61

14.13 - Comando OUTPUT


- Tipo: Comando de execuo; - Uso: Data Step; - O comando OUTPUT funciona de duas formas: Especifica ao SAS que o registro que est sendo processado deve ser gravado no arquivo, imediatamente, e no, ao final do Data Step (OUTPUT implcito). Especifica 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 condio; ATENO! Ao se codificar um comando OUTPUT no programa, o SAS desliga o OUTPUT implcito ao final do DATA Step. A ao de salvar o dado fica por conta do programador.

OUTPUT ; IF <expresso> THEN OUTPUT ; IF <expresso> THEN OUTPUT <arquivo> ;


expresso Combinao de variveis e valores que determinam uma condio a ser testada. Nome de um arquivo SAS, que j tenha sido especificado e criado pelo comando DATA.

arquivo

62

Ex.33:
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 P M C C

O A A L A

S U R A R

A L I U L

N O A D O

5 1 1 0 0 0 1 1 1

1 1

5 0 8 7

0 0 0 5 0

0 0 0 0 0

.
. .

1 1 2

0
5 0 0

I S

1 8

PROC PRINT ; RUN ;


The SAS System Obs 1 2 3 4 5 6 NOME PAULO PAULO MARIA MARIA CLAUDIA CLAUDIA NIVEL 10 10 10 10 10 10 SALARIO 1000 1000 800 800 750 750 SAL 1100 2200 920 1840 900 1800

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 ;

63

3 LABORATRIO Utilizao dos comandos de programao em DATA Step


A partir do arquivo SAS CADASTRO, gerado no 1 laboratrio: 1 - Monte um programa que crie um novo arquivo SAS, temporrio, somente com os dados das pessoas do sexo feminino e casadas. Gere um relatrio com os dados desse arquivo. Significado dos cdigos 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 seleo. 2 - Monte um programa que crie um novo arquivo SAS, temporrio; - Crie trs variveis novas que serviro como acumuladoras do nmero de pessoas casadas (CAS), solteiras (SOL) e separadas (SEP), a partir da anlise da varivel ESTADO CIVIL; - Gere um relatrio com os dados deste arquivo; OBS: Utilize o comando RETAIN para permitir a acumulao. Utilize o comando de atribuio (=) para criar as variveis 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 distribuio do ESTADO CIVIL. 3 - Monte um programa que crie um novo arquivo SAS, temporrio; - Crie uma varivel numrica constante (FAM) igual a 1.1; - A partir da anlise da varivel FILHOS, crie uma nova varivel (DEP) e altere a varivel SALARIO : Se possui filhos: - DEP ="COM DEPENDENTES" - SALARIO ter o resultado da multiplicao da varivel SALARIO pela varivel FAM; Se no possui filhos: - DEP="NO POSSUI DEPENDENTES" - Gere um relatrio com os dados deste arquivo;
64

OBS: Utilize o comando de atribuio (=) para criar e alterar as variveis. Utilize o comando IF-THEN/ELSE, interagindo com o comando DO/END para se distinguir se possui ou no filhos e permitir a execuo de mais de um comando. Preste ateno aos resultados, verifique se est tudo correto. 4 - Monte um programa que crie um novo arquivo SAS, temporrio; - Selecione as pessoas que ganham menos de R$ 3.000,00; - Aumente o valor do salrio dessas pessoas em 10% at 12 vezes (relativos a 12 meses), ou at o salrio atingir um valor superior a R$ 5.000,00. Utilize a equao: SALARIO=SALARIO*1.1 - Salve os valores incrementados, um a um; - O arquivo s deve conter as variveis: NOME, EMPRESA, FUNCAO e SALARIO ; - Gere um relatrio 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 salrio. Utilize o comando KEEP ou DROP para determinar quais as variveis que sero arquivadas. 5 - Monte um programa que crie trs novos arquivos SAS, temporrios, (SA, LTDA e INSTITUTO) ; - Selecione os dados, de maneira que, cada arquivo s possua os dados referentes a cada TIPO DE EMPRESA. - Elimine dos trs arquivos as pessoas que ocupam FUNCAO de "DIRETOR" e "GERENTE"; - Gere os relatrios desses trs 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 gravao dos registros.

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 diretrio c:\curso\sas ; - Cada arquivo dever conter os seguintes dados:
PESSOAL Variveis: NOME, SEXO, IDADE, PESO, ALTURA, ANIVERSARIO, ESTADO CIVIL, FILHOS, RG e CPF Variveis: NOME, RG, CPF, EMPRESA, FUNCAO, ADMISSAO, SALARIO e TIPO DE EMPRESA Pessoas que possuam filhos; Pessoas solteiras; Pessoas que ocupam cargo de chefia (GERENTE e DIRETOR); Pessoas que no ocupam cargos de chefia;

TRABALHO

FAMILIA SOLTEIRO CHEFE

SUB

- Gere relatrios para ver o contedo de cada arquivo; 7 - Com os dados do arquivo CADASTRO, monte um programa SAS que gere um arquivo temporrio com as pessoas entre 20 e 30 anos, sendo que, cada pessoa selecionada receber um bonus de R$ 3.500,00 ao salrio anual, at completar 30 anos. Crie uma varivel nova (BONUS) com o valor total de bonus recebido por cada pessoa selecionada, e uma varivel (NUM) com o nmero de vezes que a pessoa recebeu o bonus; - Utilize o comando WHERE com um operador especial para selecionar os dados; - Utilize o comando DO WHILE ou UNTIL para processar a varivel com o valor total do bonus recebido; - No altere a varivel IDADE do arquivo. Crie novas variveis auxiliares: IDADE_INICIAL que ser igual a IDADE IDADE_FINAL que ser a IDADE incrementada - Gere um relatrio com as variveis: NOME, IDADE_INICIAL, IDADE_FINAL, SALARIO, BONUS , NUM; OBS: Ateno lgica do WHILE ou UNTIL, para que o programa no entre em loop.
66

15 - FUNES DO SAS
15.1 - Introduo - Toda funo representa a execuo de uma determinada rotina que ir retornar um determinado valor. - Toda funo SAS recursiva. Funo pode ser executada dentro de outra funo, como parmetro da funo; - As funes no SAS, normalmente, fazem parte de um comando de atribuio, durante a criao ou alterao de uma varivel no DATA Step, mas tambm podem ser utilizadas para formar uma expresso lgica, em um comando IF ou WHERE.

<varivel> = <funo>(OF arg1, arg2, . . . , argn ) ;


varivel Nome at no mximo 32 caracteres, aonde ser armazenado o valor retornado da execuo da funo. Palavra-chave que identifica a funo a ser processada. Parmetros de entrada para processamento da funo: varivel, expresso aritmtica, valor constante. Parmetro opcional especial para as funes estatsticas, que indica o processamento num intervalo de argumentos.

funo arg

OF

Tipos de funes: - Funes de Tratamento de Caractere; - Funes de Tratamento de Data e Hora; - Funes Matemticas; - Funes de Estatsticas Descritivas; - Funes Trigonomtricas e Hiperblicas; - Funes de Truncamento; - Funes para gerao de Nmeros Randmicos; - Funes de Probabilidade; - Funes Financeiras; - Funes de Macro;
67

15.2 - Funes de Tratamento de Caractere 15.2.1 - Funo UPCASE - Funo que converte o contedo de uma varivel ou expresso, para caracteres maisculos. <varivel>=UPCASE (argumento) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.

argumento Varivel ou expresso caractere, cujo contedo ser convertido para letras maisculas.

15.2.2 - Funo LOWCASE - Funo que converte o contedo de uma varivel ou expresso, para caracteres minsculos. <varivel>=LOWCASE (argumento) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.

argumento Varivel ou expresso caractere, cujo contedo ser convertido para letras minsculas.

68

15.2.3 - Funo SUBSTR - Funo que efetua a manipulao do contedo de uma varivel caractere. <varivel>=SUBSTR (arg1, arg2, [arg3]) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Primeiro argumento, determina a varivel ou expresso caractere cujo contedo ser manipulado. Segundo argumento, determina a posio inicial do contedo da varivel, que ser manipulado. Terceiro argumento, opcional, determina o nmero de caracteres do contedo da varivel que se deseja manipular. Se no for especificado, a funo pegar todos os caracteres, do valor do segundo argumento at o final.

arg1

arg2

arg3

OBS: possvel manipular dados numricos. Estes sero automaticamente convertidos para caractere, mas ateno, todo campo numrico alinhado pela direita e possui um formato padro de 12 dgitos, no mnimo, isso equivale a 12 caracteres resultantes, na converso. Nmero:
3 5

Caractere:
3 5

69

15.2.4 - Funo COMPRESS - Funo que retira caracteres, individualmente, de um argumento. <varivel>=COMPRESS(arg1,[arg2]);
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo; Primeiro argumento, determina a varivel ou expresso caractere cujo contedo ser compactado; Segundo argumento, opcional e entre aspas, determina um ou mais caracteres que sero retirados, individualmente, do primeiro argumento.

arg1

arg2

OBS:Se o segundo argumento no for especificado, a funo assumir o branco como caractere padro a ser retirado. 15.2.5 - Funo LENGTH - Funo que informa o tamanho, em bytes, do argumento. <varivel>=LENGTH(arg);
varivel Nome at 32 caracteres que armazenar o resultado, numrico, do processamento da funo; Argumento, determina a varivel ou expresso caractere cujo contedo ser determinado o tamanho;

arg

OBS: O Valor retornado pela funo LENGTH, sempre ser numrico.


70

15.2.6 - Funo INDEX

- Funo que retorna um valor numrico que representa a primeira posio de um determinado caractere dentro do argumento.

<varivel>=INDEX (arg1, arg2) ;


varivel Nome at 32 caracteres que armazenar o resultado, numrico, do processamento da funo. Primeiro argumento, determina a varivel ou expresso caractere cujo contedo ser manipulado. Segundo argumento, determina o caractere, entre aspas, que se deseja localizar no primeiro argumento.

arg1

arg2

OBS: Se o caractere especificado no for encontrado, a funo index retornar o valor zero. Ex.35:
DATA POSICAO; REGIAO="FRANA#ALEMANHA#ESPANHA#ITLIA"; 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 Obs 1 2 3 4 LOCAL 17 13 25 0

71

Ex.36:
Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caractere que identifica a Secretaria de Segurana Pblica, armazenado-os em duas novas variveis: RG_NUM e RG_SSP.
DATA NOVO (DROP=AUX); INFILE "C:\ID\RG.DAT"; INPUT RG $ 18. ; RG=UPCASE(RG); AUX=INDEX(RG,"SSP"); IF AUX=0 THEN DELETE; RG_NUM=SUBSTR(RG, 1, AUX-1) ; RG_SSP=SUBSTR(RG, AUX); RUN; Arquivo: RG.TXT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

5 2 2 8 1

8 3 2 6 2

4 4 3 7 3

1 s 9 9 4

6 s 7 4 5

6 p 4 7 6

s / 8 E S

s s 8 X S

p p s P

s R /

p C G

/ I O

r T

s O

PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ;


The SAS System RG_NUM 584166 234 22397488 123456 RG_SSP SSP/DF SSP/SP SSP/RS SSP/GO

72

15.3 - Funes de Truncamento

15.3.1 - Funo INT - Funo que retorna com o valor inteiro de uma varivel ou de uma expresso. <varivel> = INT ( argumento ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.

argumento Varivel ou expresso numrica, da qual se deseja obter o valor inteiro.

15.3.2 - Funo ROUND - Funo que retorna um valor arredondado de uma varivel ou expresso numrica. <varivel> = ROUND ( arg1, [arg2] ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Varivel ou expresso numrica da qual se deseja arredondar. Argumento opcional, especifica o mltiplo do arredondamento e a posio numrica aonde ser feita o arredondamento ( 1 , 10 , . . . ou 0.1 , 0.01 , . . . ). Se no for especificado, a funo arredondar para um valor inteiro.

arg1

arg2

73

Ex.37:
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 1 5 1

2 9 5 5

6 7 8 8

. 7 . 8

5 . 8 .

4 0 8 2 9 9

PROC PRINT DOUBLE; RUN ;


The SAS System Obs 1 2 3 4 X 326.54 1977.09 558.88 1588.29 TRUNCA 326 1977 558 1588 INTEIRO 327 1977 559 1588 DEZENA 330 1980 560 1590 CENTENA 300 2000 600 1600 DECIMO 326.5 1977.1 558.9 1588.3 CENTES 326.54 1977.09 558.88 1588.29 MULT5 325 1975 560 1590

74

15.4 - Funes Estatsticas Descritivas 15.4.1 - Funo SUM - Funo que efetua um somatrio de valores entre variveis numricas, para cada registro de dados. <varivel> = SUM ( [OF] var1, var2, . . . varn ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.

var1, var2, . . . varn Nome das variveis numricas que se deseja efetuar um somatrio. OF Opcional, identifica um intervalo de variveis.

15.4.2 - Funo MEAN - Funo que efetua uma mdia entre os valores de variveis numricas, para cada registro de dados. <varivel> = MEAN ( [OF] var1, var2, . . . varn) ;

varivel

Nome at 32 caracteres que armazenar o resultado do processamento da funo.

var1, var2, . . . varn Nome das variveis numricas que se deseja efetuar uma mdia. OF Opcional, identifica um intervalo de variveis.

75

Ex.38:
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 1

3 8

. . 1

5 5 0

2 1

5 7

. . 1

2 4 2

2 1

4 8

. . 2

8 9 5

2 1

5 8

. . 1

7 9 5

2 2

5 0

. . 1

8 5 8

2 2

2 0

. . 1

0 8 2

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ; RUN ;


The SAS System T1 23.5 18.5 10.0 T2 25.2 17.4 12.0 T3 24.8 18.9 25.0 T4 25.7 18.9 15.0 T5 25.8 20.5 18.0 T6 22.0 20.8 12.0 TEMPSOMA 147 115 92 TEMPMED 24.5000 19.1667 15.3333

76

15.5 - Funes de Tratamento de Data e Hora 15.5.1 - Funo MDY - Funo que gera uma data a partir de valores de dia, ms e ano.

<varivel>=MDY(mm, dd, yyyy);


varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor numrico que representa o ms; Valor numrico que representa o dia; Valor numrico que representa o ano.

mm dd yyyy

15.5.2 - Funes: DAY, MONTH , YEAR

- Funes que extraem de uma data o dia, o ms e o ano respectivamente.

<varivel>=DAY(data); <varivel>=MONTH(data); <varivel>=YEAR(data);


varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor que representa uma data SAS.
77

data

15.5.3 - Funo TODAY - Funo que retorna a data atual do ambiente de processamento. No possui argumentos. <varivel>=TODAY();

15.5.4 - Funo TIME - Funo que retorna a hora atual do ambiente de processamento. No possui argumentos. <varivel>=TIME();

15.5.5 - Funes: HOUR, MINUTE e SECOND - Funes que extraem de um valor tempo a hora, minuto e segundo respectivamente.

<varivel>=HOUR(tempo); <varivel>=MINUTE(tempo); <varivel>=SECOND(tempo);


varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor que representa o tempo no formato SAS.

tempo

78

Ex.39: 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 2 1 0 0

0 5 4 8 3

1 0 0 0 0

1 4 8 1 3

1 2 1 1 1

9 0 9 9 9

7 0 3 6 5

6 0 4 7 5

TITLE1 "Relatrio de Idades"; PROC PRINT;RUN;


Relatrio de Idades IDADE_ ANO 33 10 75 43 55 IDADE_ DIA 8452 -115 23881 12046 16375

Obs 1 2 3 4 5

DIA 10 25 14 8 3

MES 11 4 8 1 3

ANO 1976 2000 1934 1967 1955

ANIV 6158 14725 -9271 2564 -1765

79

4 LABORATRIO Utilizar as funes do SAS.


1 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um novo arquivo SAS, temporrio, somente com as pessoas que possuem o sobrenome Mendes, e as novas variveis: PNOME SNOME CP DV INTEIRO ARR1 ARR2 ARR3 T_EMP APOS Conter a parte do NOME depois da vrgula; Conter a parte do NOME antes da vrgula; Conter os 9 primeiros dgitos da varivel CPF; Conter os dois ltimos dgitos da varivel CPF; Conter o valor inteiro da varivel SALARIO; Conter o arredondamento da expresso SALARIO*0.8235 para um valor com duas casas decimais; Conter o arredondamento da expresso SALARIO*0.8235 para um valor inteiro; Conter o arredondamento da expresso SALARIO*0.8235 para um valor mltiplo de 5; Conter o tempo do funcionrio na empresa, em anos; Conter o nmero de anos que falta para o funcionrio se aposentar, sabendo-se que a idade para solicitar aposentadoria com 65 anos;

- Gere um relatrio para verificar os resultados; OBS: Utilize as funes: INDEX, SUBSTR, INT, ROUND, YEAR|. 2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS, temporrio, e as novas variveis novas: SAL_FAM Salrio famlia, s para quem possui filhos. Ser o resultado do SALARIO*(1+(FILHOS*0.05)) ; SAL_COM Salrio comissionado, s para quem possui cargo de chefia. Ser o resultado do SALARIO*1.2 ; SAL_SOM Somatrio de salrios. Ser o resultado do somatrio entre as variveis: SAL, SAL_FAM e SAL_COM; SAL_MED Mdia dos salrios. Ser o resultado da mdia entre as variveis: SAL, SAL_FAM e SAL_COM ; - Gere um relatrio para visualizar os resultados;

OBS: Utilize as funes SUM e MEAN, para somar e tirar a mdias entre as variveis, respectivamente.

80

16 - COMANDOS DE CONFIGURAO 16.1 - Comando OPTIONS


- Tipo: Comando de declarao; - Uso: Livre;
- Comando definio que altera e configura opes de performance, de impresso, de visualizao do ambiente SAS, de comunicao, etc OPTIONS opt1 opt2 . . . optn ; Algumas opes:
COMPRESS=NO Opo que especifica a compactao dos dados na gerao de um arquivo Data set ( YES ou CHAR, BINARY, NO ); Opo que especifica um "driver" para impresso ou sada de relatrio; Opo que especifica qual ser o ltimo registro a ser processado; Opo que especifica qual ser o primeiro registro a ser processado; Opo que determina a impresso ou no, da data nos relatrios; Opo que determina a impresso ou no, do nmero da pgina; Opo que especifica a numerao inicial das paginas de OUTPUT, para cada execuo; Opo que especifica o tamanho da linha de impresso do relatrio (nmero de colunas); Opo que especifica o tamanho da pagina de impresso (nmero de linhas); Opo que especifica o nmero mximo de erros a serem exibidos no LOG; Opo que determina a sobreposio ou no, dos dados de um arquivo; Opo que especifica a quantidade de memria que o procedimento SORT poder utilizar (em bytes). No windows: 66MBytes; Opo que especifica a quantidade de memria que o sistema SAS poder utilizar para qualquer processamento. No windows: livre;

DEVICE=WIN OBS=MAX FIRSTOBS=1 DATE/NODATE NUMBER/NONUMBER PAGENO=1

LINESIZE=65

PAGESIZE=24

ERRORS=20

REPLACE/NOREPLACE SORTSIZE=

MEMSIZE=

81

Ex.40:
LIBNAME ARQ "C:\SAS" ; OPTIONS COMPRESS=YES OBS=100 DEVICE=WINPRTC PS=66 LS=132 NODATE ; DATA ARQ.OPT ; SET ARQ.DADOS ; <comando> <comando> . . . . . . . . . ; RUN; PROC PRINT ; RUN ;

Ser gerado um arquivo compactado com apenas 100 registros; o relatrio sair direto na impressora colorida do ambiente windows, com 66 linhas e 132 colunas por pgina, e sem a impresso da data no cabealho.

Ex.41:
LIBNAME ARQ "C:\ALUNO" ; OPTIONS SORTSIZE=750M COMPRESS=BINARY PS=60 LS=132; PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN; PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;

O procedimento SORT poder utilizar at 750Mbytes de memria para processar, o arquivo ordenado ser compactado no modo binrio e ser gerado um relatrio com 60 linhas e 132 colunas por pgina, na tela OUTPUT da sesso Windows.

82

16.2 - Comando LABEL


- Tipo: Comando de declarao; - Uso: Data Step e Proc Step; - Comando de definio, utilizado para atribuir rtulos descritivos as variveis; - Utilizado para melhorar a aparncia de um relatrio. Pode-se associar rtulos com no mximo 256 caracteres; - Utilizado no DATA Step - Utilizado em PROC Step O LABEL permanente, ser armazenado na estrutura do arquivo; O LABEL temporrio, existir apenas para a execuo do procedimento.

LABEL <varivel> = "rtulo" . . . ;


varivel rtulo Nome da varivel na qual ser associado um rtulo descritivo. Descrio, at 256 caracteres, que ser associada a varivel.

Ex.42:
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 M S

A A O

U R N

L C I

O I A O

5 5 5

9 7 1

. . .

0 3 3

9 8 5

9 3 0

. . .

5 0 5

PROC PRINT NOOBS SPLIT=" " ; RUN ;


Relatrio de Idades ALTURA EM POLEGADAS 59.0 57.3 51.3 PESO EM LIBRAS 99.5 83.0 50.5

NOME PAULO MARCIO SONIA

83

16.3 - Comando FORMAT


- Tipo: Comando de declarao; - Uso: Data Step e Proc Step; - Comando de definio que serve para formatar as variveis e melhorar a aparncia dos dados num relatrio; - Utilizado no DATA Step - Utilizado em PROC Step O FORMAT permanente, ser armazenado na estrutura do arquivo; O FORMAT temporrio, existir apenas para a execuo do procedimento.

FORMAT <varivel> <formatow.d> . . . ;


varivel formatow.d Nome da varivel que ser formatada. Nome especial do formato com o tamanho do campo (w) e nmero de casas decimais (d), criado pelo prprio usurio ou da biblioteca de formatos do SAS: COMMAXw.d DDMMYYw. Formata com pontos e vrgula; Formata um campo data com /;

Ex.43:
OPTIONS OBS=10; PROC PRINT DATA=ARQ.CADASTRO SPLIT="*" ; VAR NOME ANIVERSARIO SALARIO; LABEL NOME="Sobrenome,Nome*" ANIVERSARIO="Data de*Aniversrio" SALARIO="Salrio*Bruto"; FORMAT ANIVERSARIO DDMMYY10. SALARIO COMMAX12.2 ; RUN;
The SAS System Data de Aniversrio 17/04/1986 29/07/1976 15/03/1977 13/10/1983 14/06/1977 27/06/1977 08/02/1984 11/10/1985 09/11/1986 16/07/1985 Salrio Bruto 1.662,28 3.612,03 3.133,36 1.584,08 3.317,27 3.900,55 2.139,16 2.076,92 1.534,09 1.795,60

Obs 1 2 3 4 5 6 7 8 9 10

Sobrenome,Nome MALA,ROSANE SILVA,CECILIA PINTOTO,TANIA MARQUES,LIGIA SERPA,RENATO PISCO,PAULO MARKO,MARCO GUEDES,CARLA YATAKA,CARLA MILIA,FLAVIA

84

16.4 - Comando ODS - Tipo: Comando de declarao; - Uso: Livre; - Output Delivery System (ODS), um recurso especial para a manipulao dos resultados gerados pelos procedimentos SAS, permitindo a escolha de padres de impresso e visualizao, gerao de arquivos e gerao de documentos.

ODS <padro> [opes] ; ... ODS <padro> CLOSE ;


padres: HTML PDF PS RTF Gera os resultados no padro html; Gera os resultados no padro Adobe; Gera os resultados no padro PostScript; Gera os resultados no padro Rich Text;

opo genrica: FILE= Determina a localizao e nome do arquivo gerado com o padro. Somente para o padro HTML: default, statdoc, minimal, education, festival, journal, ocean, normal, sasweb, science, seaside, theme, . . ., etc

STYLE=

OBS: Cada padro de visualizao possui suas prprias opes;


85

Ex.44:
ODS HTML FILE="C:\temp\teste.html" STYLE=statdoc; OPTIONS OBS=10; PROC PRINT DATA=ARQ.CADASTRO SPLIT="*" ; VAR NOME ANIVERSARIO SALARIO; LABEL NOME="Sobrenome,Nome*" ANIVERSARIO="Data de*Aniversrio" SALARIO="Salrio*Bruto"; FORMAT ANIVERSARIO DDMMYY10. SALARIO COMMAX12.2 ; RUN; ODS HTML CLOSE;

The SAS System

Obs

Sobrenome,Nome

Data de Aniversrio 17/04/1986 29/07/1976 15/03/1977 13/10/1983 14/06/1977 27/06/1977 08/02/1984 11/10/1985 09/11/1986 16/07/1985

Salrio Bruto 1.662,28 3.612,03 3.133,36 1.584,08 3.317,27 3.900,55 2.139,16 2.076,92 1.534,09 1.795,60

1 2 3 4 5 6 7 8 9 10

MALA,ROSANE SILVA,CECILIA PINTOTO,TANIA MARQUES,LIGIA SERPA,RENATO PISCO,PAULO MARKO,MARCO GUEDES,CARLA YATAKA,CARLA MILIA,FLAVIA

86

17 - PROCEDIMENTOS ESTATSTICOS BSICOS 17.1 - Procedimento MEANS Procedimento que produz relatrios com estatsticas descritivas simples para variveis numricas. O relatrio gerado possui uma formatao padro com algumas estatsticas: Freqncia (N), Mdia (MEAN), Desvio Padro (STD), valor mximo (MAX) e o valor mnimo (MIN).

PROC MEANS [opes] ; CLASS <lista de variveis> ; VAR <lista de variveis> ; BY <lista de variveis> ; RUN;
opes
DATA= MAXDEC=

Nome do arquivo SAS para ser processado; Especifica o nmero de casas decimais (mximo 8);

CLASS

Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: No necessrio executar um PROC SORT, antes;

VAR

Especifica as variveis numricas que sero analisadas pelo procedimento;

BY

Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: necessrio executar um PROC SORT, antes;

87

Ex.45:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC MEANS DATA=ARQ.MEDIA ; RUN ;
The SAS System The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ------------------------------------------------------------------------------idade 550 26.3618182 7.4751560 20.0000000 78.0000000 peso 550 79.3567273 12.6820018 41.9000000 111.5000000 altura 550 1.8381273 0.1027400 1.6000000 2.0600000 salario 434 3332.21 2693.34 1500.73 25377.28 ------------------------------------------------------------------------------08:49 Tuesday, August 10, 2010 1

Ex.46:
LIBNAME ARQ "G:\KUSEL\SAS" ; OPTIONS NODATE NONUMBER; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 MEDIAN MEAN MAX MIN ; RUN ;
The SAS System The MEANS Procedure Variable Median Mean Maximum Minimum -----------------------------------------------------------------------idade 25.00 26.36 78.00 20.00 peso 78.50 79.36 111.50 41.90 altura 1.84 1.84 2.06 1.60 salario 3080.41 3332.21 25377.28 1500.73 ------------------------------------------------------------------------

88

Ex.47:
LIBNAME ARQ "G:\KUSEL\SAS" ; OPTIONS NODATE NONUMBER; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN; CLASS SEXO; VAR SALARIO; RUN ;
The SAS System The MEANS Procedure Analysis Variable : salario N sexo Obs N Mean Maximum Minimum ---------------------------------------------------------------------F 350 271 3302.66 20336.22 1500.73 M 200 163 3381.35 25377.28 1507.53 ----------------------------------------------------------------------

Ex.48:
LIBNAME ARQ "G:\KUSEL\SAS" ; OPTIONS NODATE NONUMBER; PROC SORT DATA=ARQ.MEDIA ; BY SEXO ; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; BY SEXO ; VAR SALARIO ; RUN ;
The SAS System ------------------------------------------- sexo=F ---------------------------------------The MEANS Procedure Analysis Variable : salario N Mean Maximum Minimum --------------------------------------------------271 3302.66 20336.22 1500.73 ---------------------------------------------------

------------------------------------------- sexo=M ---------------------------------------Analysis Variable : salario N Mean Maximum Minimum --------------------------------------------------163 3381.35 25377.28 1507.53 ---------------------------------------------------

89

17.2 - Procedimento FREQ Procedimento que produz tabelas simples e tabelas cruzadas, da freqncia de variveis numricas e caracteres.

PROC FREQ [opes] ; BY <lista de variveis> ; TABLES <variveis> / [opes] ;

opes DATA=
NLEVELS PAGE COMPRESS

Nome de um arquivo SAS; Indica o nmero de valores distintos das variveis que esto sendo analisadas; Especifica que seja gerado uma tabela por pgina do relatrio; Especifica que seja gerado o mximo de tabelas possveis em cada pgina de relatrio;

BY

Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: necessrio executar um PROC SORT, antes;

TABLES Especifica as variveis e a regra de formao da tabela de freqncia. Utiliza-se o caractere * para cruzar as variveis. Ex.: (tables a*b y*x peso*altura). opes LIST Os resultados sairo num formato listado ao invs de uma tabela cruzada. MISSING Inclui os valores "missing" na tabela. NOCUM No gera as colunas de freqncia e percentual acumulativo. NOPERCENT No gera as colunas com percentuais. NOFREQ No gera a coluna de freqncia.

90

Ex.49:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.MEDIA NLEVELS COMPRESS; TABLES SEXO IDADE ; RUN ;
The SAS System The FREQ Procedure Number of Variable Levels Variable Levels -------------------sexo 2 idade 31 Cumulative Cumulative sexo Frequency Percent Frequency Percent --------------------------------------------------------F 350 63.64 350 63.64 M 200 36.36 550 100.00 Cumulative Cumulative idade Frequency Percent Frequency Percent ---------------------------------------------------------20 39 7.09 39 7.09 21 53 9.64 92 16.73 22 41 7.45 133 24.18 23 49 8.91 182 33.09 24 47 8.55 229 41.64 25 51 9.27 280 50.91 26 45 8.18 325 59.09 27 62 11.27 387 70.36 28 53 9.64 440 80.00 29 44 8.00 484 88.00 30 44 8.00 528 96.00 35 1 0.18 529 96.18 36 1 0.18 530 96.36 37 1 0.18 531 96.55 38 1 0.18 532 96.73 41 1 0.18 533 96.91 45 2 0.36 535 97.27 49 1 0.18 536 97.45 50 1 0.18 537 97.64 54 1 0.18 538 97.82 57 1 0.18 539 98.00 58 1 0.18 540 98.18 61 1 0.18 541 98.36 67 2 0.36 543 98.73 68 1 0.18 544 98.91 69 1 0.18 545 99.09 71 1 0.18 546 99.27 73 1 0.18 547 99.45 74 1 0.18 548 99.64 77 1 0.18 549 99.82 78 1 0.18 550 100.00

91

Ex.50:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.CADASTRO ; TABLES SEXO*EMPRESA ; RUN ;
The SAS System 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

92

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

93

Ex.52:
TITLE; OPTIONS NODATE NUMBER PAGENO=1; PROC FREQ DATA=ARQ.CADASTRO ; TABLE SEXO*EMPRESA / MISSING NOCUM NOPERCENT FORMAT=commax6.2; RUN;
1 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,00 | 58,00 | 101,00 | 112,00 | 350,00 | 22.57 | 16.57 | 28.86 | 32.00 | | 68.10 | 59.79 | 58.05 | 68.71 | ---------+--------+--------+--------+--------+ M | 37,00 | 39,00 | 73,00 | 51,00 | 200,00 | 18.50 | 19.50 | 36.50 | 25.50 | | 31.90 | 40.21 | 41.95 | 31.29 | ---------+--------+--------+--------+--------+ Total 116,00 97,00 174,00 163,00 550,00

94

17.3 - Procedimento TABULATE


O procedimento TABULATE monta relatrios com estatsticas descritivas num formato tabular.

PROC TABULATE [opes] ; CLASS <variveis> ; VAR <variveis> ; BY <variveis> ; TABLE <sub-tabela , linha , coluna> / [opes] ;
opes DATA= FORMAT= Nome do arquivo SAS; Formata todos os valores de todas as clulas da tabela;

CLASS

Especifica uma ou mais variveis, numricas ou caracteres, que possibilitam o agrupamento de dados, e que sero utilizadas como variveis classificatrias no comando TABLE. OBS: No necessrio executar um PROC SORT, antes; Especifica as variveis numricas que iro participar de uma anlise estatstica, e que sero utilizadas no comando TABLE; Especifica uma ou mais variveis que possibilitam o agrupamento de dados, com quebra da tabela. OBS: necessrio executar um PROC SORT, antes; Especifica a regra de formao da tabela; sub-tabela linha coluna Especifica uma varivel ou expresso que ir definir a regra de formao das sub-tabelas; Especifica uma varivel ou expresso que ir definir a regra de formao das linhas da tabela; Especifica uma varivel ou expresso que ir definir a regra de formao das colunas da tabela;
CONDENSE Especifica que seja gerado o mximo de tabelas BOX=

VAR

BY

TABLE

opes

possveis em cada pgina de relatrio; Especifica o texto que aparecer na caixa vazia da tabela; elemento*elemento cruzamento elemento elemento concatenao (elemento elemento) agrupamento

OBS:

Regras de formao:

Elementos: variveis, funes estatsticas (SUM, MEAN, N, PCTN, PCTSUM, etc), ALL (totalizador).
95

Ex.53:
PROC TABULATE DATA=ARQ.CADASTRO ; CLASS SEXO ; VAR IDADE PESO; TABLE SEXO, IDADE PESO ; RUN ;
The SAS System ------------------------------------------------| | idade | peso | | |------------+------------| | | Sum | Sum | |---------------------+------------+------------| |sexo | | | |---------------------| | | |F | 9216.00| 26766.60| |---------------------+------------+------------| |M | 5283.00| 16879.60| -------------------------------------------------

Ex.54:
PROC TABULATE DATA=ARQ.CADASTRO ; CLASS SEXO ; VAR IDADE PESO; TABLE SEXO , (IDADE PESO)*MEAN ; RUN ;
The SAS System ------------------------------------------------| | idade | peso | | |------------+------------| | | Mean | Mean | |---------------------+------------+------------| |sexo | | | |---------------------| | | |F | 26.33| 76.48| |---------------------+------------+------------| |M | 26.42| 84.40| -------------------------------------------------

Ex.55:
PROC TABULATE DATA=ARQ.CADASTRO ; CLASS SEXO EMPRESA ; VAR PESO; TABLE SEXO, EMPRESA*PESO*MEAN ; RUN ;
The SAS System -------------------------------------------------------------| | empresa | | |--------------------------------------| | | | | PARIS | | | ATLAS S.A. | MALTA LTDA | INSTITUTO | | |------------+------------+------------| | | peso | peso | peso | | |------------+------------+------------| | | Mean | Mean | Mean | |---------------------+------------+------------+------------| |sexo | | | | |---------------------| | | | |F | 77.67| 77.44| 75.42| |---------------------+------------+------------+------------| |M | 83.87| 84.24| 83.77| --------------------------------------------------------------

96

Ex.56:
PROC TABULATE DATA=ARQ.CADASTRO ; CLASS SEXO EMPRESA ; VAR ALTURA; TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE BOX=_PAGE_; RUN ;
The SAS System -----------------------------------|sexo F | altura | | |------------| | | Mean | |---------------------+------------| |empresa | | |---------------------| | |ATLAS S.A. | 1.83| |---------------------+------------| |MALTA LTDA | 1.81| |---------------------+------------| |PARIS INSTITUTO | 1.78| |---------------------+------------| |All | 1.80| ------------------------------------

-----------------------------------|sexo M | altura | | |------------| | | Mean | |---------------------+------------| |empresa | | |---------------------| | |ATLAS S.A. | 1.89| |---------------------+------------| |MALTA LTDA | 1.91| |---------------------+------------| |PARIS INSTITUTO | 1.90| |---------------------+------------| |All | 1.90| ------------------------------------

97

Ex.57:
PROC TABULATE DATA=ARQ.CADASTRO ; CLASS FILHOS E_CIVIL SEXO; TABLE SEXO*E_CIVIL*FILHOS ALL, ALL; RUN ;
The SAS System -------------------------------------| | All | | |------------| | | N | |-----------------------+------------| |sexo |e_civil|filhos | | |-------+-------+-------| | |F |1 |1 | 31.00| | | |-------+------------| | | |2 | 72.00| | | |-------+------------| | | |3 | 75.00| | | |-------+------------| | | |4 | 38.00| | |-------+-------+------------| | |2 |1 | 38.00| | | |-------+------------| | | |4 | 28.00| | | |-------+------------| | | |5 | 41.00| | |-------+-------+------------| | |3 |0 | 27.00| |-------+-------+-------+------------| |M |1 |1 | 22.00| | | |-------+------------| | | |2 | 40.00| | | |-------+------------| | | |3 | 48.00| | | |-------+------------| | | |4 | 11.00| | |-------+-------+------------| | |2 |1 | 24.00| | | |-------+------------| | | |4 | 25.00| | | |-------+------------| | | |5 | 13.00| | |-------+-------+------------| | |3 |0 | 17.00| |-----------------------+------------| |All | 550.00| --------------------------------------

98

Ex.58:
TITLE1 "Relatrio com a Mdia de Salrio"; TITLE2 "e a Distribuio Percentual dos Funcionrios por Empresa"; OPTIONS LS=130; PROC TABULATE DATA=ARQ.CADASTRO MISSING; CLASS SEXO EMPRESA; VAR SALARIO ; TABLE SEXO="Sexo"*EMPRESA="Empresa" ALL="Total" , N*f=6. PCTN="%"*f=commax6.2 SALARIO=""*MEAN="Mdia de Salrio"*f=commax12.2 ; RUN ;

OBS: *f= *=

Formata o campo Especifica um LABEL para o campo


Relatrio com a Mdia de Salrio e a Distribuio Percentual dos Funcionrios por Empresa ----------------------------------------------------------| | | | Mdia de | | | N | % | Salrio | |------------------------------+------+------+------------| |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| -----------------------------------------------------------

99

5 LABORATRIO
Utilizao dos procedimentos estatsticos bsicos. Utilizando o arquivo SAS CADASTRO, gerado no 1 LABORATRIO: 1 - Gere um relatrio com a mdia, o valor mximo, o valor mnimo e o desvio padro das variveis PESO e ALTURA, classificados por SEXO e com apresentao dos resultados com duas casas decimais. 2 - Gere um relatrio apenas coma a mdia e somatrio de todas as variveis numricas do arquivo SAS, CADASTRO ordenados por EMPRESA. 3 - Gere um relatrio com as tabelas de freqncia de SEXO, IDADE, ESTADO CIVIL, FILHOS, EMPRESA e FUNCAO. 4 - Gere um relatrio com uma tabela de freqncia de SEXO versus IDADE. 5 - Gere um relatrio com duas tabelas de freqncia de ESTADO CIVIL versus FILHOS e SEXO versus EMPRESA na mesma PROC. 6 - Gere um relatrio com uma tabela que apresente a mdia das variveis IDADE e PESO, classificadas pela varivel SEXO. - A varivel SEXO, dever formar as linhas; - As variveis IDADE e PESO, devero formar as colunas; - Dever ser utilizada a opo MEAN para formar as colunas; (Utilize o procedimento TABULATE) 7 - Gere um relatrio com uma tabela que apresente a mdia e o somatrio da varivel SALARIO, classificado por SEXO versus EMPRESA. - A expresso SEXO versus EMPRESA dever formar as linhas; - A varivel SALARIO dever formar as colunas; - Devero ser utilizadas as opes MEAN e SUM para formar as colunas - Tamanho da pgina de 55 linhas e 80 colunas; (Utilize o procedimento TABULATE) 8 - Acrescente a tabela do relatrio anterior: - Um totalizador na linha e na coluna: ALL; - Rotule todos os elementos (variveis, estatsticas e totalizadores); - Formate os resultados numricos com pontos, vrgula e duas decimais; - Ttulo: Apresentao do Salrio por Sexo e Empresa; - Sem a data e paginao iniciando do 1; - Gere a tabela no padro HTML e PDF.

100

18 - RECURSO DE FORMATAO ESPECIAL 18.1 - Procedimento FORMAT


O procedimento FORMAT permite que o usurio crie os seus prprios formatos de leitura e impresso, para variveis numricas e caracteres. PROC FORMAT ; VALUE <nome> [( opes )] <intervalo> = "<descrio>" VALUE Comando que define um formato diferente para os valores de uma varivel numrica ou caractere.

nome

- Nome do formato com at 32 caracteres; - Nomes de formatos que sero aplicados em variveis caracteres, obrigatoriamente, devero iniciar com $; - Nomes de formato no podem terminar com nmeros.

intervalo - Especifica um valor, ou intervalos, que os valores de uma varivel poder assumir durante a formatao. - Valores ou intervalos de variveis caracteres, devero vir entre aspas. - Parmetros especiais so utilizados para definir limites de intervalos: LOW HIGH OTHER < Menor valor encontrado; Maior valor encontrado; Qualquer outro valor no identificado; No inclui o valor do intervalo.

descrio -Valor, no qual a varivel formatada, assumir no momento de sua utilizao; - No mximo 32.768 caracteres, entre aspas;

101

Ex.59:
OPTIONS PS=30 ; PROC FORMAT ; VALUE $TUR "1"="Turno da MANH" "2"="Turno da TARDE" OTHER="Turno NO EXISTE!" ; VALUE ALT LOW-<1.50="Estatura BAIXA" 1.50-<1.70="Estatura MEDIANA" 1.70-HIGH="Estatura ALTA" ;

RUN; PROC PRINT DATA=FORMATO ; FORMAT TURNO $TUR. ALTURA ALT. ; RUN ;
The SAS System Obs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 NOME Alfredo Alicia Carol Paulo Maria Ricardo Tomas Joao Marcia Ligia Laura Paula Carlos Jaime Joice Filipe Roberto Lia SEXO M F F M F M M M F F F F M M F M M F IDADE 25 22 22 29 20 35 26 38 18 19 18 21 21 28 25 32 33 36 ALTURA Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura Estatura ALTA ALTA MEDIANA ALTA MEDIANA ALTA ALTA ALTA MEDIANA ALTA MEDIANA MEDIANA MEDIANA BAIXA BAIXA BAIXA BAIXA MEDIANA PESO 80 65 65 90 70 83 75 90 50 80 69 58 55 75 60 110 89 76 Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno Turno TURNO da MANH da MANH da MANH da MANH da MANH da MANH da MANH NO EXISTE! da MANH da MANH da MANH da MANH da TARDE da TARDE da TARDE da TARDE da TARDE da TARDE

102

6 LABORATRIO
Criar, utilizar e manipular formatos (Procedimento FORMAT) 1 - Criar um programa que gere formatos especiais para os valores das variveis: IDADE, PESO, ALTURA, ESTADO CIVIL e SALARIO . Gere vrios relatrios que utilize esses formatos. Criar rtulos para varivel IDADE: 15-25 = "15 a 25 anos" 26-50 = "26 a 50 anos" 51-HIGH = "Mais de 50 anos" Criar faixas para varivel PESO: 50-<70 = "50 a 69" 70-<80 = "70 a 79" 80-<100 = "80 a 99" Criar rtulos para varivel 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 rtulos para varivel ESTADO CIVIL: "1" = "SOLTEIRO" "2" = "CASADO" "3" = "SEPARADO" Criar faixas para varivel SALARIO: do menor at 2000, no incluso = "Iniciante" de 2000 at 4000, no incluso = "Junior" de 4000 at 7000, no incluso = "Senior" de7000 at 10000, no incluso = "Gerente" acima de 10000, no incluso = "Diretor" missing=Desempregado; 2 - Gere um relatrio com tabelas de freqncia de IDADE, ALTURA, PESO e ESTADO CIVIL com os dados formatados . (Utilize o procedimento FREQ com o comando FORMAT) 3 - Gere um relatrio com uma tabela de freqncia de IDADE versus ESTADO CIVIL, com os dados formatado. (Utilize o procedimento FREQ com o comando FORMAT) 4 - Gere um relatrio com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os dados de SALARIO formatados. - Utilize o procedimento TABULATE; - Comando FORMAT;

103

19 - COMBINAO DE ARQUIVOS SAS


19.1 - Concatenao
Concatenao a unio sem critrios, de dois ou mais arquivos SAS, um aps o outro, na vertical, originando um nico arquivo. SET <arquivo1> <arquivo2> . . . <arquivon> ;

ARQ1

ARQ2

DATA ARQ3; SET ARQ1 ARQ2; RUN;

ARQ3

ARQ1

ARQ2

104

Ex.60:
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 S P C

A A A E

R N U L

C D L S

I R A O

O A

M F F M

DATA IN.ARQ2 ; INFILE "C:\ARQ2.TXT"; INPUT NOME $ 1-7 IDADE 2. ; RUN ;


Arquivo: ARQ2.TXT
01 02 03 04 05 06 07 08 09

M C P S

A E A A

R L U N

C S L D

I O A R

2 2 1

5 2 8 5

DATA IN.CONCAT ; SET IN.ARQ1 IN.ARQ2 ; RUN; PROC PRINT DATA=IN.CONCAT ; RUN ;
The SAS System Obs 1 2 3 4 5 6 7 8 NOME MARCIO SANDRA PAULA CELSO MARCIO CELSO PAULA SANDRA SEXO M F F M IDADE . . . . 25 22 18 15

105

19.2 - Concatenao Ordenada Concatenao ordenada a unio de dois ou mais arquivos SAS em um nico arquivo, aonde os dados aparecem ordenados por uma ou mais variveis comuns. Os arquivos devero estar ordenados, antes da concatenao, pela varivel comum. SET <arquivo1> <arquivo2> . . . <arquivon>; BY <varivel comum> ;

ARQ1

ARQ2

PROC SORT DATA=ARQ1; BY <varivel comum>;RUN; PROC SORT DATA=ARQ2; BY <varivel comum>;RUN; DATA ARQ3 ; SET ARQ1 ARQ2 ; BY <varivel comum> RUN ; ARQ3

ARQ1

ARQ2

106

Ex.61:
LIBNAME IN "C:\KUSEL\CUR_SAS" ; PROC SORT DATA=IN.ARQ1 ; BY NOME ; PROC SORT DATA=IN.ARQ2 ; BY NOME ; DATA IN.COORD ; SET IN.ARQ1 IN.ARQ2 ; BY NOME ; RUN; PROC PRINT DATA=IN.COORD ; RUN ;
The SAS System Obs 1 2 3 4 5 6 7 8 NOME CELSO CELSO MARCIO MARCIO PAULA PAULA SANDRA SANDRA SEXO M M F F IDADE . 22 . 25 . 18 . 15

107

19.3 - Combinao Ordenada ( Match-Merging ) Combinao ordenada a unio de dois ou mais arquivos SAS em um nico arquivo, combinado e ordenado por uma ou mais variveis comum. Os arquivos devero estar ordenados, antes do "Match-Merging", pela varivel comum. MERGE <arquivo1> . . . <arquivon> ; BY <varivel comum> ;

ARQ1

ARQ2

PROC SORT DATA=ARQ1; BY <varivel comum>;RUN; PROC SORT DATA=ARQ2; BY <varivel comum>;RUN; DATA ARQ3 ; MERGE ARQ1 ARQ2 ; BY <varivel comum> RUN ; ARQ3

ARQ1

ARQ2

108

Ex.62:
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 ;
The SAS System Obs 1 2 3 4 NOME CELSO MARCIO PAULA SANDRA SEXO M M F F IDADE 22 25 18 15

109

7 LABORATRIO Utilizao da combinao de arquivos SAS


Utilizando os arquivos SAS gerados no 3 LABORATRIO item 6:

1 - Monte um programa que gere um arquivo SAS (CONCAT) que ser a concatenao dos dados dos arquivos: PESSOAL e TRABALHO. Gere um relatrio 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 intercalao ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel comum CPF. Gere um relatrio 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 varivel comum.

3 - Monte um programa que gere um arquivo SAS (JUSTA) que ser a justaposio ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel comum CIC. Gere um relatrio 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 varivel comum.

110

20 - BIBLIOGRAFIA
MANUAIS: SAS Introductory Guide SAS Institute Inc. SAS Circle, Cary - NC Terceira Edio 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/BSICO Soft Consultoria

111

Você também pode gostar