Sie sind auf Seite 1von 114

INTRODUO AO SAS

Nvel Bsico

UNICAMP/CENAPAD-SP

2 CONTEDO
1 - INTRODUO
1.1 - HISTRICO 1.2 - ATUALMENTE 1.3 - DEFINIO BSICA 1.4 - MDULOS DO SAS 1.5 - CONCEITOS BSICOS 1.6 - ARQUIVOS SAS 1.7 - ESTRUTURA DOS ARQUIVOS SAS 1.8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS 1.9 - SINTAXE DOS COMANDOS 1.10 - AMBIENTE WINDOWS pag.04 pag.04 pag.04 pag.05 pag.06 pag.07 pag.08 pag.09 pag.10 pag.11 pag.12 pag.19 pag.19 Pag.21 pag.22 pag.23 pag.24 pag.25 pag.26 pag.27 pag.28 pag.30 pag.31 pag.32 pag.33 pag.33 pag.34 pag.34 pag.35 pag.35 pag.36 pag.38 pag.40 pag.43 pag.43 pag.44 pag.45 pag.46 pag.48 pag.49 pag.52 pag.53 pag.54 pag.55 pag.56 pag.57 pag.58 pag.59 pag.60

2 - ESTRUTURA DATA STEP


2.1 - INTRODUO 2.2 - COMANDO DATA 2.3 - COMANDO INFILE 2.4 - COMANDO SET 2.5 - COMANDO INPUT 2.5.1 - INPUT LISTADO 2.5.2 - INPUT COLUNADO 2.5.3 - INPUT FORMATADO 2.5.4 - DESCRIO DE UM CAMPO DATA 2.5.5 - CONTROLES ESPECIAIS DO INPUT 2.5.6 - DETALHES DO COMANDO INPUT 2.6 - COMANDO CARDS OU DATALINES

3 - ESTRUTURA PROC STEP


3.1 - INTRODUO 3.1.1 - COMANDO VAR 3.1.2 - COMANDO BY 3.1.3 - COMANDO TITLE 3.1.4 - COMANDO FOOTNOTE 3.2 - PROCEDIMENTO PRINT 3.3 - PROCEDIMENTO SORT

4 - ARQUIVO DE MENSAGENS "SAS Log" 5 - COMANDOS BSICOS DE PROGRAMAO EM DATA STEP


5.1 - COMANDO LIBNAME 1 LABORATRIO 2 LABORATRIO 5.2 - COMANDO DE ATRIBUIO (=) 5.3 - COMANDO RETAIN 5.4 - COMANDO IF-THEN/ELSE 5.5 - COMANDO WHERE 5.6 - COMANDO DO/END 5.7 - COMANDO DO/END INTERATIVO 5.8 - COMANDO DO/WHILE 5.9 - COMANDO DO/UNTIL 5.10 - COMANDO DROP e KEEP 5.11 - OPES DE ARQUIVOS SAS 5.12 - COMANDO DELETE 5.13 - COMANDO OUTPUT

3
5.14 - COMANDO LENGTH 3 LABORATRIO pag.62 pag.63 pag.66 pag.66 pag.67 pag.67 pag.67 pag.68 pag.69 pag.69 pag.71 pag.72 pag.75 pag.75 pag.75 pag.77 pag.77 pag.77 pag.79 pag.79 pag.79 pag.80 pag.80 pag.80 pag.81 pag.81 pag.83 pag.84 pag.84 pag.86 pag.87 pag.88 pag.90 pag.90 pag.93 pag.98 pag.103 pag.105 pag.105 pag.107 pag.109 pag.109 pag.111 pag.113 pag.114

6 - FUNES DO SAS
6.1 - INTRODUO 6.2 - FUNES DE TRATAMENTO DE CARACTER 6.2.1 - FUNO UPCASE 6.2.2 - FUNO LOWCASE 6.2.3 - FUNO SUBSTR 6.2.4 - FUNO COMPRESS 6.2.5 - FUNO LENGTH 6.2.6 - FUNO SCAN 6.2.7 - FUNO INDEX 6.3 - FUNES DE TRUNCAMENTO 6.3.1 - FUNO INT 6.3.2 - FUNO ROUND 6.4 - FUNES ESTATSTICAS DESCRITIVAS 6.4.1 - FUNO SUM 6.4.2 - FUNO MEAN 6.5 - FUNES DE TRATAMENTO DE DATA E HORA 6.5.1 - FUNO MDY 6.5.2 - FUNES: DAY, MONTH, YEAR 6.5.3 - FUNO TODAY 6.5.4 - FUNO TIME 6.5.5 - FUNES: HOUR, MINUTE, SECOND 6.6 - FUNES MACRO 6.6.1 - FUNO %SYSFUNC 4 LABORATRIO

7 - COMANDOS DE CONFIGURAO
7.1 - COMANDO OPTIONS 7.2 - COMANDO LABEL 7.3 - COMANDO FORMAT 7.4 - COMANDO ODS

8 - PROCEDIMENTOS ESTATSTICOS BSICOS


8.1 - PROCEDIMENTO MEANS 8.2 - PROCEDIMENTO FREQ 8.3 - PROCEDIMENTO TABULATE 5 LABORATRIO

9 - RECURSO DE FORMATAO ESPECIAL


9.1 - PROCEDIMENTO FORMAT 6 LABORATRIO

10 - COMBINAO DE ARQUIVOS SAS


10.1 - CONCATENAO 10.2 - COMBINAO ORDENATA (MATCH-MERGING) 7 LABORATRIO

11 - BIBLIOGRAFIA

4 1 - INTRODUO 1.1 - HISTRICO Dcada de 60; North Caroline University; Censo Agro-pecurio Norte-americano; Conjunto de sub-rotinas (FORTRAN, IBM/370); SAS Institue Inc. (1975); 1.2 - ATUALMENTE 40.000 Instalaes em clientes, em 110 paises; 96 das 100 maiores empresas do mundo, utilizam SAS. (Fortune 500 List - 2005); SAS a maior empresa de software do mundo de capital privado; Idiomas: Chins, Francs, Alemo, Hebreu, Italiano, Japons, Russo, Espanhol, Polons, Hungaro, Sueco, Coreano, etc.

5 1.3 - DEFINIO BSICA um software integrado para anlise de dados que consiste de vrios produtos, que proporcionam: - 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; 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, Famlia Windows, OS/2 ) - UNIX ( Solaris, AIX, HP-UX, Irix, Linux )

6 1.4 - MDULOS DO SAS

SAS/BASE SAS/STAT SAS/GRAPH SAS/OR

Mdulo bsico, obrigatrio em toda instalao; Mdulo estatstico; Mdulo grfico ( Histogramas, plots, ... ); Mdulo de anlise e pesquisa operacinal (Programao linear, Anlise de caminho crtico); Mdulo para anlise de controle de qualidade; Mdulo de econometria (Sries temporais, Modelagem de Equaes Simultneas); Mdulo de programao interativa e amigvel; Mdulo para anlise e operao de matrizes; Mdulo para acesso aos diversos tipos de Banco de Dados; entre ambientes

SAS/QC SAS/ETS

SAS/ASSIST SAS/IML SAS/ACCESS

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

Mdulo para desenvolvimento de aplicaes; Mdulo para agilizar o acesso a arquivos;

7 1.5 - CONCEITOS BSICOS

DATA SET

Arquivo de dados com estrutura SAS;

OBSERVAO

Registro de um arquivo de dados SAS;

JOB SAS

Arquivo com 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 contido 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;

8 1.6 - ARQUIVOS SAS

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

Os arquivos SAS podem ser temporrios ou permanentes.

Em um nico programa SAS ( Job SAS ), vrios arquivos podero ser criados e analisados.

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

9 1.7 - ESTRUTURA DOS ARQUIVOS SAS


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

As colunas nas tabelas so chamadas de variveis: S Variveis correspondem aos campos de dados; S Cada varivel recebe um nome; S Existem dois tipos de variveis: caracter (at 32K caracteres - 32KBytes) numrica (Representao IEEE - 8Bytes) As linhas na tabela so chamadas de observaes (ou registros). No existem limites 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.

10 1.8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS

Todo nome de arquivo e varivel deve seguir as seguintes regras: S Possuir de 1 32 caracteres; S Comear com letra (A-Z); S Pode continuar com nmeros, letras ou travesses( _ ).

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

11 1.9 - SNTAXE DOS COMANDOS

Todo comando SAS comea com uma palavra-chave, de identificao, e termina com ponto e virgula (;). S Os comandos podem comear e terminar em qualquer parte da linha; S Um comando pode se extender em diversas linhas; S Vrios comandos podem estar na mesma linha.

Ex.2:
DATA EXEMPLO1 ; INFILE C:\TEMP\DADOS.DATt; 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 ;

12 1.10 - AMBIENTE WINDOWS Para acessar o sistema SAS e necessrio que se esteja no ambiente WINDOWS do seu micro, abrir a janela SAS e execut-lo.

13 JANELA DE OPES DE CONFIGURAO


Tools Options System...

14

15 OPES DE CONFIGURAO DO EDITOR


Tools Options Enhanced Editor...

16

17

CONFIGURAO DE TECLADO
Tools Options Keys

18

19

2 - ESTRUTURA DATA Step


2.1 - INTRODUO a seo de um programa SAS aonde se orgnaniza e administra os dados, utilizando comandos de programao 4GL do SAS/BASE, baseados em uma lgica de processamento. -A maioria dos comandos utilizados s podem ser executados na estrutura DATA Step; -Os comandos seguem uma hierarquia, ou seja, a execuo de um determinado comando depende da execuo de um comando anterior; -Os arquivos processados em um DATA Step, normalmente, sero processados sequencialmente, ou seja, registro aps registro; -O DATA Step representa, internamente codificado, um loop, que repete todos os comandos, registro aps registro, 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: Compilao e Execuo; -Os comandos em um DATA Step, podem ser divididos em: Comandos de Definio Comandos de Execuo - Funcionalidade, durante a compilao; - Funcionalidade, durante a execuo.

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

20 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

21 2.2 - Comando DATA Comando de Definio; Comando que sempre inicia um DATA Step; Abre um novo arquivo DATA Set, vazio.

DATA <nome do arquivo> ;

Ex.3:
DATA ENDERECO ; DATA ARQ1 ARQ2 ARQ3 ; DATA ENT.CADASTRO ; DATA ; DATA _NULL_;

22 2.3 - Comando INFILE Comando de Definio; 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; DLM= Especifica um delimitador entre os campos.

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

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

23 2.4 - Comando SET Comando de Execuo; Este comando abre um arquivo de dados DATA Set (formato SAS), somente para leitura, e que j exista; 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 <nome do arquivo>;

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

24 2.5 - Comando INPUT Comando de Execuo; O comando INPUT serve para descrever ao SAS como esto armazenados e organizados os dados em arquivos textos, que foram especificados pelo comando INFILE ou pelos dados digitados no programa, aps o comando CARDS;

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 sequncial) at encontrar "fim de arquivo (EOF)", e ir atribuir nomes (Variveis) para cada campo de um registro;

Existem tres tipos bsicos de comando INPUT:

2.5.1 - INPUT LISTADO 2.5.2 - INPUT COLUNADO 2.5.3 - INPUT FORMATADO

25 2.5.1 - INPUT LISTADO - L as variveis na ordem que aparecem na linha de dados, de acordo com um delimitador. Os dados no precisam estar alinhados e colunados; INPUT <varivel> [$]
varivel Nome da varivel que ser associada a uma coluna de dados. Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica

OBS:Por default o delimitador ser o caracter branco , e o tamanho de qualquer varivel ser de at 8 bytes.

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

DATA FICHA ; INFILE A:\CADASTRO.TXT; INPUT NOME $ SEXO $ IDADE ALTURA PESO ; RUN;

26 2.5.2 - INPUT COLUNADO - L as variveis especificando a sua posio na linha de dados (posio inicial e posio final). As variveis devero estar alinhadas e colunadas. INPUT <varivel> [$] <incio>-<fim> [.decimal] ;
varivel $ Nome da varivel, que ser associada a uma coluna de dados. Caracter 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.

incio fim .decimal

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

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

27 2.5.3 - INPUT FORMATADO - L as variveis especificando o tamanho e opcionalmente, o formato do campo, na linha de dados. - o tipo de INPUT mais poderoso e complexo do SAS. INPUT <varivel> [$] <w.d> ou [fomatow.d] ;
varivel $ Nome da varivel, que ser associada a uma coluna de dados. Caracter 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. Valor que indica o tamanho de um campo numrico com casas decimais. Campo opcional. Nome de um formato especial de leitura de dados: BINARYw.d L campo numrico no formato binrio e o converte para decimal; COMMAw.d L campo numrico com vrgulas e as retira; 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.

w. w.d

formatow.d

28 2.5.4 - 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.

01JAN1959 -365

01JAN1960 store 0 display

01JAN1961 366

01/01/1959

01/01/1960

01/01/1961

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: DDMMMYYYYD 01JAN1960"d

29

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

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

Ex.9:

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

2 7

R J

0 1

4 5 5 0

6 0

3 0 0 0

0 0

6 , 9 ,

7 4

3 9 6 4

, ,

9 2

9 6

2 8 5 6

F 1

. 2

2 E 5 5 E 5

S P 1

C C 1

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

30

2.5.5 - CONTROLES ESPECIAIS DO INPUT Posicionadores de COLUNA ( @ , + ) @n +n Move a leitura para a coluna n ; Move a leitura n colunas ;

Posicionadores de LINHA ( # , / ) #n / Ex.10:


1 2 3 4 5 6

Move a leitura para a linha n ; Avana a leitura em uma linha ;


7 8 9 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 $ @10 B $ 4. +3 C $ 4. / D $ 1-4 / E $ @8 F $ #2 D1 $ 4. ; 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 D1 DDDD dddd

31

2.5.6 - DETALHES DO COMANDO INPUT


- Em campos numricos, no permitido "brancos" entre os nmeros; - Sinal (+ - ), ponto decimal ( . ) e notao cientfica para expoente ( E ), so permitidos em campos numricos; - Campos tipo caracter podem ter, no mximo, 32K de caracteres; - permitido "brancos" em qualquer posio em campos tipo caracter; - Campos em branco (sem informao) so considerados como "missing value" (valor perdido). - 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 sempre alinhados pela esquerda, e os dados numricos sempre alinhados pela direita; - Os tipos de INPUT , podem ser combinados num nico comado INPUT ; - Detalhes de leitura:
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.) ;

32

2.6 - Comando CARDS ou DATALINES


Comando de Definio; Indica ao SAS que os dados utilizados em um DATA Step esto digitados no programa, logo aps o comando CARDS ou DATALINES; ltimo comando dentro de um DATA Step, antes do comando RUN; O ; indica fim de dados e deve ser posto, sozinho, em uma linha; Utilizado junto com o comando INPUT, quando apenas se deseja efetuar alguns testes de execuo do DATA Step, no necessitando abrir um arquivo de leitura com o comando INFILE.

Ex.11:
DATA FICHA ; INPUT NOME $ SEXO $ IDADE ALTURA PESO ; CARDS; Antnio M 32 1.78 78 Julia F 25 1.70 65 ; RUN;

DATA FICHA ; INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ; DATALINES; Maria F 36 16857.8 Josefina F 42 15967.9 Tom M 56 18295.8 ; RUN;

33

3 - ESTRUTURA PROC Step 3.1 - INTRODUO


a seo de um programa SAS aonde se analisa os dados de um arquivo SAS, utilizando-se procedimentos especficos para cada tipo de analise. - 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 hierarquia, ou seja, podem ser colocados em qualquer ordem dentro da PROC; PROC <rotina> [opes] ; [comando] ; [comando] ; 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.

34

3.1.1 - Comando VAR Especifca as variveis do arquivo SAS que sero processadas pelo procedimento.

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

3.1.2 - Comando BY

Especifca uma ou mais variveis que permitiro o processamento em grupos;

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

35

3.1.3 - Comando TITLE


Comando livre e de Descrio, pode ser codificado em qualquer parte do programa, no estando preso a uma estrutura Data step ou Proc step. Especifca 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;

3.1.4 - Comando FOOTNOTE


Comando livre e de Descrio, pode ser codificado em qualquer parte do programa, no estando preso a uma estrutura Data step ou Proc step. Especifca 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;

36

3.2 - Procedimento PRINT

Procedimento do SAS que imprime, na sada padro, os dados contidos nos arquivos SAS. A sada padro , normalmente, a janela OUTPUT.

PROC PRINT [opes] ; VAR <lista de variveis> ; BY <lista de variveis> ; SUM <lista de variveis> ;
opes DATA= DOUBLE NOOBS UNIFORM LABEL SPLIT= Nome do arquivo SAS; Espacejamento duplo; Suprime a coluna com o nmero de cada observao do arquivo; Formata todas as paginas uniformemente; Imprime os "label's" das variveis; Especifica um caracter do label para indicar a quebra da descrio;

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

37

Ex.12:
TITLE "Relatrio de Fucionarios" ; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; Relatrio de Funcionarios NOME ANTUNES TERESA CLAUDIA MARCOS JULIO FUNCAO ANALISTA ANALISTA PROG PROG OPER

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 NOME FUNCAO ANALISTA ANALISTA PROG PROG OPER SALARIO 1800 1650 1200 1200 850 ======= 6700

ANTUNES TERESA CLAUDIA MARCOS JULIO

FONTE: DH

38

3.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 DATA= OUT= Nome do arquivo SAS para ser ordenado; Nome do arquivo SAS, ordenado. Se no for utilizada a opo, a ordenao ser feita em cima do arquivo original; Especifca uma ou vrias variveis como chaves de ordenao;

BY

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

39

Ex.14:
PROC SORT DATA=EXEMPLO OUT=ORDENA ; BY FUNCAO ; RUN ; PROC PRINT DATA=ORDENA NOOBS ; BY FUNCAO ; VAR NOME SALARIO ; SUM SALARIO ; RUN ; The SAS System ----------------------------- FUNCAO=ANALISTA ----------------------------NOME ANTUNES TERESA FUNCAO SALARIO 1800 1650 ------3450

------------------------------- FUNCAO=OPER ------------------------------NOME JULIO SALARIO 850

------------------------------- FUNCAO=PROG ------------------------------NOME SALARIO CLAUDIA MARCOS FUNCAO 1200 1200 ------2400 ==== 6700

40 4 - 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 (janela OUTPUT), ou quando este relatrio aparecer com problemas. Ex.15:
DATA EXEMPLO1 ; INFILE "C:\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; SAS Log NOTE: Copyright(c) 1989 by SAS Institute Inc., Cary, NC USA. NOTE: SAS (r) Proprietary Software Release 8.2 Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS, Site 0004267003. 1 2 3 DATA EXEMPLO1 ; INFILE "C:\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;

NOTE: The infile "C:\DADOS.TXT" is: FILENAME=C:\DADOS.TXT, RECFM=V,LRECL=132 NOTE: 5 records were read from the infile "C:\DADOS.TXT". The minimum record length was 16. The maximum record length was 23. NOTE: The data set WORK.EXEMPLO1 has 5 observations and 4 variables. NOTE: The DATA statement used 2.68 seconds. 4 5 6 PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;

41 Ex.16:
DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT';

INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ;


RUN; PROC PRINT DATA=EXEMPLO1 NOOBS VAR NOME FUNCAO ; RUN ;
SAS Log 17 DATA EXEMPLO1 ; 18 INFILE 'C:\TEMP\LEITURA.DAT'; NOTE: SCL source line. 19 INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ; 22 76 ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (. ERROR 76-322: Syntax error, statement will be ignored. 20 RUN;

NOTE: The SAS System stopped processing this step because of errors. WARNING: The data set WORK.EXEMPLO1 may be incomplete. When this step was stopped there were 0 observations and 3 variables. WARNING: Data set WORK.EXEMPLO1 was not replaced because this step was stopped. NOTE: DATA statement used: real time 0.02 seconds cpu time 0.01 seconds

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

42 Ex.17:

DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT';

INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;


RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO SALARIO ; SUM SALARIO ; RUN ;
SAS Log 58 59 60 61 DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT'; INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO $18-23 ; RUN;

NOTE: The infile 'C:\TEMP\LEITURA.DAT' is: File Name=C:\TEMP\LEITURA.DAT, RECFM=V,LRECL=256 NOTE: 5 records were read from the infile 'C:\TEMP\LEITURA.DAT'. The minimum record length was 16. The maximum record length was 23. NOTE: SAS went to a new line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXEMPLO1 has 4 observations and 4 variables. NOTE: DATA statement used: real time 0.02 seconds cpu time 0.01 seconds

62 63 PROC PRINT DATA=EXEMPLO1 NOOBS; 64 VAR NOME FUNCAO SALARIO ; ERROR: Variable FUNCAO not found. 65 SUM SALARIO; ERROR: Variable SALARIO in list does not match type prescribed for this list. 66 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used: real time 0.01 seconds cpu time 0.01 seconds

43 5 - COMANDOS BSICOS DE PROGRAMAO EM DATA STEP 5.1 - Comando LIBNAME


Comando opcional de configurao que define uma ou mais reas de trabalho e armazenamento (diretrios), para os arquivos SAS (Data Set's). Define o primeiro nvel de um nome de arquivo, "apelido". [apelido].<nome do arquivo> O comando LIBNAME, normalmente, colocado antes do comando DATA, e s ser necessrio ser executado uma nica vez durante uma sesso SAS WINDOWS. LIBNAME <apelido> "<diretrio>" ; apelido Palavra de no mnimo 1 e no mximo 8 caracteres, que identifica o primeiro nvel em um nome de arquivo. Nome de um diretrio que j exista no seu ambiente.

diretrio

OBS: O SAS define uma rea padro, temporria, de trabalho, de apelido work. Ex.18:
LIBNAME IN "C:\ALUNO" ; DATA IN.EXEMPLO ; INFILE "A:\CADASTRO" ; INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ; PROC PRINT DATA=IN.EXEMPLO NOOBS ; VAR NOME ENDERECO ; RUN ;

44 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. Leia com ateno as mensagens na janela LOG. Salve o seu programa!. OBS: Salve o seus programas! Faa-o sempre, no diretrio c:\curso\sas

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, CARGO 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, CARGO e SALARIO; - faa um somatrio da varivel SALARIO; - 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, CARGO 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;

46 5.2 - Comando de Atribuio (=)


Caracter que no SAS utilzado 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 ; Move valor; soma=x+y ; Adio; dif=x-y ; Subtrao; dobro=x*2 ; Multiplicao; met=x/2 ; Diviso; cubo=x**3 ; Exponenciao; y=-x ; Muda sinal; - Constantes : N=0 ; Constante numrica; - Concatenao de caracteres : SEXO="F" ; Constante caracter;

||

A=PAULO || ANTUNES; ==> A=PAULOANTUNES A=PAULO || || ANTUNES; ==> A=PAULO ANTUNES - Expresses complexas com prioridade de avaliao: ( ) 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) ;

47
Ex.19:

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 9 9 9 02 4 5 6 03 04 5 6 8 05 6 2 4 06 5 8 5 07 0 0 0 08 09 1 1 2 10 0 1 4 11 5 4 5 12 0 0 0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ; TITLE "Analise Contabil" ; VAR ANO RECEITA DESPESAS LUCRO DOLLAR ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ;

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

48 5.3 - Comando RETAIN


Comando de Definio; Normalmente o SAS inicializa todas as variveis criadas no DATA Step, com o valor missing, a cada iterao do DATA Step; O Comando RETAIN define ou indica 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.20:


DATA LUCROS ; INFILE C:\DADOS\NUMEROS.TXT; RETAIN CONT 0 ANO 0; INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12; ANO = ANO + 1900 ; LUCRO = RECEITA - DESPESAS ; DOLLAR = LUCRO / 0.98 ; CARDS; 94 5650 1050 95 6280 1140 96 8450 2450 RUN; PROC PRINT DATA=LUCROS NOOBS; TITLE "Analise Contabil" ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ; Analise Contabil CONT 1 2 3 ANO 1994 2089 2185 RECEITA 5650 6280 8450 ===== 20380 DESPESAS 1050 1140 2450 ==== 4640 LUCRO 4600 5140 6000 ===== 15740 DOLLAR 4693.8775 5244.8979 6122.4489 ========= 16061.2240

49 5.4 - Comando IF-THEN/ELSE Comando de Execuo; Comando que condiciona a execuo de um outro comando SAS, de acordo com alguma expresso que determina uma condio; Se a expresso, que determina a condio, for verdadeira, ser executado o comando que vier aps o THEN. Se a condiao 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 LT GT EQ LE GE NE NL NG IN < > = <= => ~= menor que maior que igual a menor ou igual a maior ou igual a no igual (diferente) no menor no maior esta no conjunto Operadores Lgicos OR | ou, um ou outro AND & e, ambos NOT ~ no, negao

50 Ex.21: 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.22: 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" ; RUN; Arquivo: NOTAS.TXT 01 V L P C L PROC PRINT NOOBS ; RUN ; The SAS System NOME VIVIANE 2.5 LIDIA PAULO CLAUDIO 6.8 LUIZ NOTA CONCEITO A A A A 5.5 A 02 I I A L U 03 V D U A I 04 I I L U Z 05 A A O D I O 06 N 07 E 08 09 2 9 6 6 5 10 . . . . . 11 5 5 8 8 5

9.5 4.5

O que est errado ??? DATA NOTA ; INFILE A:\NOTAS.TXT INPUT NOME $ 1-8 NOTA 9-11; IF NOTA LT 3 THEN CONCEITO="E" ; ELSE IF 3 <= NOTA < 5 THEN CONCEITO="D" ; ELSE IF 5 LE NOTA LT 7 THEN CONCEITO="C" ; ELSE IF 7 LE NOTA LT 9 THEN CONCEITO="B" ; ELSE CONCEITO="A" ; RUN;

51 Ex.23: 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 P F M L 02 A L A U 03 U A R I 04 L V C S 05 A I O A S 06 07 08 1 1 2 2 09 10 1 1 1 1 11 1 5 1 4 12 13 1 1 1 1 14 . . . . 15 6 6 6 6 16 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.24: Operador Lgico


IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ;

IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ;

52 5.5 - Comando WHERE;


Comando de Execuo; Comando especial que pode ser executado em DATA Step e em PROC Step; 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 IF, existe 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.25:
DATA TESTE; SET ARQ.CADASTRO; WHERE SALARIO BETWEEN 1000 AND 3000; RUN;

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

53 5.6 - Comandos DO/END Comando de Execuo; 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 primeiro; 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; <comandos> ; END ; Ex.26:
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="ADMIN" ; SAL=SALARIO ; END ; PROC PRINT NOOBS ; RUN ; The SAS System NOME CARLOS ELIANE ALVARO FATIMA201 DEP_NO 201 101 101 COM 1500 . . 500 SALARIO 1500 1800 3800 1500 DEP VENDAS ADMIN ADMIN VENDAS SAL 3000 1800 3800 2000

54 5.7 - Comando DO/END Interativo Comando de Execuo; Comando utilizado para repetir um grupo de comandos n vezes.

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


indice incio fim cont expresso Varivel auxiliar que armazena o valor da contagem no "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 determina uma condio para execuo do "loop", entre parnteses.

Ex.27: Interativo
DO MES="JAN","FEV","MAR" ; DO I = 1 TO 120 ; ( 120 vezes ) DO I = 1 TO 120 BY 2 ; ( 60 vezes ) DO I = 120 TO 1 BY -1 ; ( 120 vezes ) DO I = 1 TO 10 WHILE (X < Y) ; ( 10 vezes ou enquanto X < Y ) DO I = 2 TO 20 BY 2 UNTIL ((X/3)>Y) ; ( 10 vezes ou at (X/3)>Y ) DO I = 10 TO 0 BY -1 WHILE (MES="JAN") ; ( 11 vezes ou enquanto o MES=JAN ) ( 3 vezes )

55 5.8 - Comando DO WHILE Comando de Execuo; Comando que repete um grupo de comandos enquanto uma expresso for verdadeira; A expresso avaliada no incio do loop; Se a expresso for falsa, os comandos dentro do loop nunca sero executados. DO WHILE <(expresso)> ; ( Avaliao 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) ; ( Avaliado no incio. Executa 6 vezes ) X=X+N**2 ; N=N+1 ; END ; RUN; PROC PRINT;RUN; SAS System X 55 N 6

56 5.9 - Comando DO UNTIL Comando de Execuo; Comando que repete um grupo de comandos at a expresso ser verdadeira; A expresso avaliada no fim do loop; Se a expresso for falsa, os comandos dentro do loop sero executados, pelo menos, uma vez.

DO UNTIL <(expresso)> ; ... END; ( Avaliao 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 ; ( Avaliado no fim. Executa 6 vezes ) RUN; PROC PRINT;RUN; SAS System X 55 N 6

57 5.10 - Comandos DROP e KEEP Comandos de Definio; O comando DROP elimina variveis de um arquivo SAS; O comando KEEP mantm 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 progama 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. END $ 30. CEP $ 8. RG $ 10. CIC $ 11. MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ; RUN; DATA SUBARQ1 ; SET CLASSE ; DROP PESO ALT ESTCIV ; RUN; DATA SUBARQ2 ; SET CLASSE ; KEEP NOME END CEP ; RUN;

58 5.11 - Opes de Arquivos SAS


Todo arquivo com estrutura SAS possui opes de configurao, que so especificados aps cada arquivo, entre parnteses; So opes do arquivo, que tem sua ao vinculada ao comando aonde o arquivo est sendo especificado; Normalmente quando se especifica um arquivo, a ao, ou ser de leitura dos dados ou de gravao dos dados. <arquivo SAS> [( <opo> <opo> . . . )] ; 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. END $ 30. CEP $ 8. RG $ 10. CIC $ 11. MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ; RUN; DATA SUBARQ1 (DROP=PESO ALT ESTCIV) ; SET CLASSE ; RUN; DATA SUBARQ2 ; SET CLASSE (KEEP=NOME END CEP); RUN;

59 5.12 - Comando DELETE


Opo de Execuo; Comando que informa ao SAS, que deve ser parado o processamento do registro atual, no gravar os dados do registro no Data Set, e retornar imediatamente para o incio do Data Step para uma nova iterao; Este comando no permite gravar o registro lido no 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 1 4 3 2 5 02 7 2 1 4 03 04 1 5 5 0 1 1 05 0 0 06 07 5 1 08 2 6 0 0 3 5 09 5

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

60 5.13 - Comando OUTPUT Comando de Execuo; O comando OUTPUT funciona de duas formas: - Determina ao SAS que o registro que est sendo processado deve ser gravado no arquivo imediatamente, e no, ao final do Data Step (OUTPUT implcito). - Determina para qual arquivo SAS deve ser gravado o registro que est sendo processado. Normalmente utilizado junto com o comando IF-THEN/ELSE de acordo com uma 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

61 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; IF NIVEL="10" THEN DO I=1 TO 2 ; SAL=SALARIO*VAL ; OUTPUT ; END ; DROP I VAL; RUN; Arquivo: SAIDA.TXT
01 R P M 02 O A A 03 S U R 04 A L I 05 N O A 06 A 07 08 5 1 1 0 0 1 09 10 11 0 1 . . 1 1 5 12 13 14 15 1 1 16 5 0 8 17 0 0 0 18 0 0

PROC PRINT ; RUN ; The SAS System OBS 1 2 3 4 NOME PAULO PAULO MARIA 10 MARIA NIVEL 10 10 800 10 800 SALARIO 1000 1000 920 1058 SAL 1100 1210

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 ; PROC PRINT DATA=ARQ.MULHERES ; VAR NOME ; RUN ; PROC PRINT DATA=ARQ.HOMENS ; VAR NOME ; RUN ;

62 5.14 - Comando LENGTH Comando de Definio; Comando que define uma varivel, o tipo e o tamanho em bytes. Deve ser posicionado sempre no incio do Data Step, antes da utilizao da varivel.

LENGTH varivel [$] tamanho varivel [$] tamanho ... varivel [$] tamanho ;
varivel $ Nome da varivel que deseja definir; Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica; Tamanho em bytes da varivel.

tamanho

Ex.35:

DATA; LENGTH AUX $ 10 NUM 4 ; ... RUN;

63 3 LABORATRIO Utilizao dos comandos de programao em DATA Step


A partir do arquivo SAS CADASTRO, gerado no 1 laboratrio (para abri-lo, utilize o comando SET) : 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 deste arquivo; Cdigos de ESTADO CIVIL: (1) solteiro (2) casado (3) separado. OBS: Utilize o comando 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 ter o valor "COM DEPENDENTES" - SALARIO ter o resultado da multiplicao da varivel SALARIO pela varivel FAM; Se no possui filhos: - DEP ter o valor "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$ 1.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$ 3.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, CARGO 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 Interativo para aumentar o salrio.. Utilize o comando KEEP ou DROP para determinar quais as variveis devero ser arquivadas. 5 - Monte um programa que crie dois novos arquivos SAS, temporrios, (ATLAS e MANTAS) ; - Selecione os dados, de maneira que, em um arquivo s possua os dados das pessoas da EMPRESA "ATLAS", e em outro arquivo, da EMPRESA "MANTAS". - Elimine dos dois arquivos as pessoas que ocupam CARGO de "DIRETOR" e "GERENTE"; - Gere os relatrios desses dois 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, ESTADO CIVIL, FILHOS, RG e CIC Variveis: NOME, RG, CIC, EMPRESA, CARGO e SALARIO Pessoas que possuam filhos; Pessoas solteiras; Pessoas que ocupam cargo de chefia (GERENTE e DIRETOR); Pessoas que ocupam 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 de bonus recebido; - No altere a varivel IDADE do arquivo. Crie novas variveis auxiliares: IDADE_INICIAL que ser igual a IDADE e 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 6 - FUNES DO SAS
6.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 e sempre so utilizadas em um DATA Step. <varivel> = <funo>(OF argumento, argumento, . . . ) ;
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. Parmetro opcional que indica o processamento num intervalo de argumentos. Somente para as funes estatsticas.

funo argumento OF

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

67 6.2 - Funes de Tratamento de Caracter 6.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 caracter, cujo contedo ser convertido para letras maisculas.

6.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 caracter, cujo contedo ser convertido para letras minsculas.

68 6.2.3 - Funo SUBSTR Funo que efetua a manipulao do contedo de uma variavel caracter. <varivel>=SUBSTR (arg1, arg2, [arg3]) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Primeiro argumento, especifca a varivel ou expresso caracter cujo contedo ser manipulado. Segundo argumento, especifca a posio inicial do contedo da varivel, que sera 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 automticamente convertidos para caracter, mas ateno, todo campo nmerico alinhado pela direita e possui um formato padro de 12 dgitos, no mnimo, isso equivale a 12 caracteres resultantes, na converso. Nmero:
3 5

Caracter:
3 5

69 6.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, especifca a varivel ou expresso caracter cujo contedo ser compactado; Segundo argumento, opcional e entre aspas, especifca 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 caracter default para ser retirado. 6.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, especifca a varivel ou expresso caracter cujo contedo ser determinado o tamanho;

arg

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

70 Ex.37:
Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variaveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caracter que identifica a Secretaria de Segurana Pblica, armazenado-os em duas novas variveis: RG_NUM e RG_SSP.
DATA NOVO ; INFILE C:\ID\RG.DAT; INPUT RG $ 18. ; RG1=0 ; RG2=0 ; AUX1=COMPRESS ( RG ) ; AUX2=LENGTH ( AUX1 ) ; DO I=1 TO AUX2 ; AUX3=SUBSTR ( AUX1, I, 1 ) ; IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ; ELSE RG2=RG2+1 ; END ; RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ; RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 ); RG_SSP = UPCASE ( RG_SSP ) ; DROP AUX1 AUX2 AUX3 I RG1 RG2 ; RUN; Arquivo: RG.TXT
01 5 2 2 02 8 3 2 03 4 4 3 04 1 s 9 05 6 s 7 06 6 p 4 07 s / 8 08 s s 8 09 p p s s p / r g 10 / 11 d 12 f 13 14 15 16 17 18

PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG

71 6.2.6 - Funo SCAN Funo que retorna caracteres de acordo com a posio relativa de um caracter especfico. <varivel>=SCAN (arg1, arg2, [arg3]) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Primeiro argumento, especifca a varivel ou expresso caracter cujo contedo ser manipulado. Segundo argumento, determina a posio dos caracteres, que se deseja, em relao a um caracter especfico; Terceiro argumento, opcional e entre aspas determina o caracter que servir como limite entre os caracteres desejados. Se no for especificado, todos os caracteres especiais sero limitrfes.(! @ # $ % & * - , ; branco).

arg1

arg2

arg3

OBS: O resultado da funo SCAN ser armazenado numa varivel com o tamanho de 200 bytes, por default. Ex.38:
DATA PALAVRA; REGIAO=FRANA#ALEMANHA#ESPANHA#ITLIA; PAIS=SCAN(REGIAO,1,#); OUTPUT ; PAIS=SCAN(REGIAO,2,#); OUTPUT ; PAIS=SCAN(REGIAO,3,#); OUTPUT ; PAIS=SCAN(REGIAO,4,#); OUTPUT ; RUN; PROC PRINT; VAR PAIS; RUN; The SAS System PAIS FRANA ALEMANHA ESPANHA ITLIA

72 6.2.7 - Funo INDEX

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

<varivel>=INDEX (arg1, arg2) ;


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

arg1

arg2

OBS: Se o caracter especificado no for encontrado a funo index retornar o valor zero.. Ex.39:
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 LOCAL 17

13 25 0

73 Ex.40: Soluo Alternativa 1


Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variaveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caracter que identifica a Secretaria de Segurana Pblica, armazenado-os em duas novas variveis: RG_NUM e RG_SSP.
DATA NOVO ; LENGTH AUX $ 6; INFILE C:\ID\RG.DAT; INPUT RG $ 18. ; RG_NUM=SCAN( RG, 1,SSP ) ; AUX=SCAN( RG, 2, SSP ); RG_SSP=SSP || UPCASE(AUX ); RUN; Arquivo: RG.TXT
01 5 2 2 02 8 3 2 03 4 4 3 04 1 s 9 05 6 s 7 06 6 p 4 07 s / 8 08 s s 8 09 p p s s p / r g 10 / 11 d 12 f 13 14 15 16 17 18

PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG

74 Ex.41: Soluo Alternativa 2

Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variaveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caracter que identifica a Secretaria de Segurana Pblica, armazenado-os em duas novas variveis: RG_NUM e RG_SSP.
DATA NOVO ; INFILE C:\ID\RG.DAT; INPUT RG $ 18. ; RG=UPCASE(RG); IF INDEX(RG,S)>0; RG_NUM=SUBSTR(RG, 1, INDEX(RG,S )-1) ; RG_SSP=SUBSTR(RG, INDEX(RG,S)); RUN; Arquivo: RG.TXT
01 5 2 2 02 8 3 2 03 4 4 3 04 1 s 9 05 6 s 7 06 6 p 4 07 s / 8 08 s s 8 09 p p s s p / r g 10 / 11 d 12 f 13 14 15 16 17 18

PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG

75 6.3 - Funes de Truncamento 6.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.

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

76 Ex.42:
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 3 1 5 1 PROC PRINT DOUBLE; RUN ; 02 2 9 5 5 03 6 7 8 8 04 . 7 . 8 05 5 . 8 . 06 4 0 8 2 9 9 07

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

77 6.4 - Funes Estatsticas Descritivas 6.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.

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

78 Ex.43:
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 1 2 3 8 3 . . 4 5 5 5 2 1 6 5 7 7 . . 8 2 4 9 2 1 10 4 8 11 . . 12 8 9 13 2 1 14 5 8 15 . . 16 7 9 17 2 2 18 5 0 19 . . 20 8 5 21 2 2 22 2 0 23 . . 24 0

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ; RUN ; The SAS System 14:18 Monday, January 22, 1996 T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED

23.5 18.5

25.2 17.4

24.8 18.9

25.7 18.9

25.8 20.5

22.0 20.8

147 115

24.5000 19.1667

79 6.5 - Funes de Tratamento de Data e Hora 6.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

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

data

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

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

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

81 6.6 - Funes MACRO 6.6.1 - Funo %SYSFUNC Funo macro que permite executar funes de DATA Step em qualquer parte do programa SAS. %SYSFUNC(funo, [formato]);
funao formato Funo de DATA Step que ser utilizada; Argumento opcional que especifica um formato para o resultado da funo.

82 Ex.44: Tratamento de DATA

DATA ANIVERSARIO; INPUT DIA MES ANO; ANIV=MDY(MES,DIA,ANO); IDADE_ANO=INT((TODAY()-ANIV)/365.25); IDADE_DIA=01jan2000"d - ANIV; CARDS; 10 11 1976 25 04 2000 14 08 1934 08 01 1967 03 03 1955 ; RUN; TITLE1 Relatrio de Idades; TITLE2 Em relao a data de hoje: %SYSFUNC(TODAY(), ddmmyy10.); PROC PRINT;RUN;
Relatrio de Idades Em relao a data de hoje: 04/04/2006 IDADE_ ANO 29 5 71 39 51 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

83 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, e as novas variveis: DV INTEIRO ARR1 ARR2 ARR3 T_EMP APOS NO_INV Conter os dois ltimos caracteres 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 a data que o funcionario poder se aposentar, sabendo-se que a idade para solicitar aposentadoria com 65 anos; Conter a o formato nome sobrenome da varivel NOME, que atualmente est como sobrenome,nome ;

- Gere um relatrio para verificar os resultados; OBS: Utilize as funes: SUBSTR, INT, ROUND, YEAR, MDY, INDEX ou SCAN e o operador ||. 2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS, temporrio, e as novas variveis novas: SAL_FAM Salrio famlia, s para quem SALARIO*(1+(FILHOS*0.05)) ; possui filhos. Ser o resultado do

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

84 7 - Comandos de Configurao 7.1 - Comando OPTIONS


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= Opo que especifica a compactao dos dados na gerao de um arquivo Data set ( YES ou CHAR/BIN/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;

DEVICE= OBS= FIRSTOBS=. (NO)DATE

(NO)NUMBER Opo que determina a impresso ou no, do nmero da pgina; PAGENO= Opo que especifica a numerao inicial das paginas de OUTPUT, para cada execuo;

LINESIZE= Opo que especifica o tamanho da linha de impresso do relatrio (nmero de colunas); PAGESIZE= 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;

ERRORS=

(NO)REPLACE Opo que determina a sobreposio ou no, dos dados de um arquivo; SORTSIZE= Opo que especifica a quantidade de memria que o procedimento SORT poder utilizar (em bytes); Opo que especifica a quantidade de memria que o sistema SAS poder utilizar para qualquer processamento.

MEMSIZE=

85 Ex.45:

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

SER GERADO UM ARQUIVO COMPACTADO E, UM RELATRIO COM 66 LINHAS E 132 COLUNAS POR PGINA, SEM A IMPRESSO DA DATA NO CABEALHO, NO AMBIENTE WINDOWS.

Ex.46:

LIBNAME ARQ "C:\ALUNO" ; OPTIONS SORTSIZE=200M PS=60 LS=132 DEVICE=WINPRTM; PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN; PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;

O PRO CEDIMENTO SORT PODER UTILIZAR ATE 200MBYTES DE MEMRIA PARA PROCESSAR E SER GERADO UM RELATRIO COM 60 LINHAS E 132 COLUNAS POR PGINA, NA IMPRESSORA PADRO DO WINDOWS.

86 7.2 - Comando LABEL


Comando de Definio, utilizado para atribuir rtulos descritivos as variveis; Utilizado para melhorar a aparncia de um relatrio , pode associar rtulos com no mximo 256 caracteres; Este comando pode ser utilizado em Data Step's e Proc Step's. - DATA Step Permante, armazenado na estrutura do arquivo; - PROC Step Temporrio, 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, associada a varivel.

Ex.47:
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 P M S 02 A A O 03 U R N 04 L C I 05 O I A O 06 07 08 5 5 5 09 9 7 1 10 . . . 11 0 3 3 12 13 9 8 5 14 9 3 0 15 . . . 16 5 0

PROC PRINT NOOBS SPLIT="" ; RUN ; The SAS System NOME ALTURA EM POLEGADAS 59.0 57.3 51.3 PESO EM LIBRAS 99.5 83.0 50.5

PAULO MARCIO SONIA

87 7.3 - Comando FORMAT


Comando de definio, serve para formatar variveis e melhorar a aparncia dos dados num relatrio; Este comando pode ser utilizado em Data Step's e Proc Step's. - DATA Step Permante, armazenado na estrutura do arquivo; - PROC Step Temporrio, apenas para a execuo do procedimento. FORMAT <varivel> <formatow.d> . . . ;
varivel formatow.d Nome da varivel que ser formatada. Nome 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 (Padro Brasil); Formata um campo data com /;

Ex.48:
PROC PRINT DATA=ARQ.CADASTRO LABEL; VAR NOME DATA_ANIV SALARIO; LABEL DATA_ANIV=Data de Aniversrio SAL=Salrio; FORMAT DATA_ANIV DDMMYY10. SALARIO COMMAX12.2 ; RUN; The SAS System Data de Aniversrio 16/04/1985 06/02/1941 24/07/1930 03/07/1979 06/06/1967 18/07/1977 27/03/1950 17/03/1943 16/03/1957

Obs 1 2 3 4 5 6 7 8 9

NOME SONTAS,MARCIO SERPA,MARCO LONAS,PAULO CERTO,MARCO BENTES,MARCO MARUEL,PAULO LUILA,ROSANE APARECIDO,ELIANE SAUL,ROSANE

Salrio 3.240,05 26.540,67 55.211,27 3.121,80 9.452,31 3.288,80 25.628,72 . 24.949,40

88 7.4 - Comando ODS 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 formato html; Gera os resultados no formato Adobe PDF; Gera os resultados no formato PostScript; Gera os resultados no formato Rich Text, gerando resultados para Microsoft Word;

opo genrica: FILE= Especifica a localizao e nome do arquivo gerado com o padro.

OBS: Cada padro de visualizao possui suas prprias opes;

89 Ex.49:

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

The SAS System Data de Aniversrio 16/04/1985 06/02/1941 24/07/1930 03/07/1979 06/06/1967 18/07/1977 27/03/1950 17/03/1943 16/03/1957 04/09/1962

Obs 1 2 3 4 5 6 7 8 9 10

NOME SONTAS,MARCIO SERPA,MARCO LONAS,PAULO CERTO,MARCO BENTES,MARCO MARUEL,PAULO LUILA,ROSANE APARECIDO,ELIANE SAUL,ROSANE PISCO,ROSANE

Salrio 3.240,05 26.540,67 55.211,27 3.121,80 9.452,31 3.288,80 25.628,72 . 24.949,40 9.710,13

90 8 - PROCEDIMENTOS ESTATSTICOS BSICOS 8.1 - Procedimento MEANS Procedimento que produz relatrios com estatsticas descritivas simples para variveis numricas. O relatrio gerado possui uma formatao padro com algumas estatsticas: 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> ; OUTPUT <opes>;
opes DATA= Nome do arquivo SAS para ser processado; MAXDEC= Especifica o nmero de casas decimais (no mximo 8); NOPRINT Opo para no gerar o relatrio; Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: No necessrio executar, antes, um PROC SORT; Espec ifica as variveis numricas que sero processadas pelo procedimento; Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: necessrio executar, antes, um PROC SORT; Nome do arquivo que armazenar os resultados do procedimento;

CLASS

VAR

BY

OUTPUT OUT=

<estatistica>= Nome das variveis que iro armazenar o resultado da

estatstica especificada (MEAN, SUM, MAX, MIN, etc). OBS: Na mesma ordem que aparece no comando VAR.

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

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

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

92 Ex.53:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC SORT DATA=ARQ.MEDIA ; BY TURNO ; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; BY TURNO ; VAR IDADE ; RUN ;

The SAS System Analysis Variable : IDADE ---------------------------------- TURNO=1 -------------------------------N Mean Maximum Minimum ------------------------------------------------------12 24.42 38.00 18.00 ---------------------------------------------------------------------------------------- TURNO=2 -------------------------------N Mean Maximum Minimum ------------------------------------------------------6 29.17 36.00 21.00

Ex.54:
TITLE; OPTIONS NODATE PAGENO=1; PROC MEANS DATA=ARQ.CADASTRO NOPRINT; CLASS EMPRESA; VAR IDADE SAL; OUTPUT OUT=TESTE MIN=ID_MINIMO SAL_MINIMO MEAN=ID_MEDIA SAL_MEDIA MAX=ID_MAXIMA SAL_MAXIMA; RUN; PROC PRINT DATA=TESTE;RUN;

1 SAL_ MINIMO 3000.40 3000.40 25002.08 3064.58 SAL_ MEDIA SAL_ MAXIMA 55998.09 27538.21 55998.09 24988.44

Obs empresa 1 2 3 4

_TYPE_ _FREQ_ ID_MINIMO 0 1 1 1 432 104 162 166 19 19 50 20

ID_MEDIA

ID_MAXIMA 79 30 79 49

ATLAS S.A. MALTA LTDA PARIS INSTITUTO

43.4838 16299.47 24.4615 3626.58 64.4321 30792.82 34.9578 10018.65

93 8.2 - Procedimento FREQ Procedimento que produz tabelas simples e tabelas cruzadas, da frequncia de variveis numricas e caracter.

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


opes DATA= Nome de uma arquivo SAS; PAGE Determina que seja gerado uma tabela por pgina do relatrio. COMPRESS Determina que seja gerado o mximo de tabelas possveis em cada pgina do relatrio; BY Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: necessrio executar, antes, um PROC SORT;

TABLES Especifica as variveis e a regra de formao da tabela de frequncia. Utiliza-se o caracter * para cruzar variveis. Ex.: (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. NOPRINT No gera relatrio de sada. OUT= Especifica arquivo SAS de sada. NOCUM No gera as colunas de frequncia e percentual acumulativo. NOPERCENT No gera as colunas com percentuais. NOFREQ No gera a coluna de frequncia.

94 Ex.55:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO IDADE ; RUN ; The SAS System

Cumulative Cumulative SEXO Frequency Percent Frequency Percent --------------------------------------------------------------------F 9 50.0 9 50.0 M 9 50.0 18 100.0

Cumulative Cumulative IDADE Frequency Percent Frequency Percent ---------------------------------------------------------------------18 2 11.1 2 11.1 19 1 5.6 3 16.7 20 1 5.6 4 22.2 21 2 11.1 6 33.3 22 2 11.1 8 44.4 25 2 11.1 10 55.6 26 1 5.6 11 61.1 28 1 5.6 12 66.7 29 1 5.6 13 72.2 32 1 5.6 14 77.8 33 1 5.6 15 83.3 35 1 5.6 16 88.9 36 1 5.6 17 94.4 38 1 5.6 18 100.0

95 Ex.56:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO*EMPRESA ; RUN ;
The SAS System The FREQ Procedure Table of SEXO by EMPRESA SEXO Frequency Percent Row Pct Col Pct ATLAS MANTAS Total F 7 7 14 28.00 28.00 56.00 50.00 50.00 63.64 50.00 M 4 7 11 16.00 28.00 44.00 36.36 63.64 36.36 50.00 Total 11 14 25 44.00 56.00 100.00 EMPRESA

96 Ex.57:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO*IDADE / LIST ; RUN ;

The SAS System Cumulative Cumulative SEXO IDADE Frequency Percent Frequency Percent -------------------------------------------------------------------------------F 18 2 11.1 2 11.1 F 19 1 5.6 3 16.7 F 20 1 5.6 4 22.2 F 21 1 5.6 5 27.8 F 22 2 11.1 7 38.9 F 25 1 5.6 8 44.4 F 36 1 5.6 9 50.0 M 21 1 5.6 10 55.6 M 25 1 5.6 11 61.1 M 26 1 5.6 12 66.7 M 28 1 5.6 13 72.2 M 29 1 5.6 14 77.8 M 32 1 5.6 15 83.3 M 33 1 5.6 16 88.9 M 35 1 5.6 17 94.4 M 38 1 5.6 18 100.0

97 Ex.58:
TITLE; OPTIONS NODATE PAGENO=1; PROC FREQ DATA=ARQ.CADASTRO ; TABLE SEXO*EMPRESA / OUT=TESTE MISSING NOCUM NOPERCENT; RUN; PROC PRINT DATA=TESTE;RUN;
1 The FREQ Procedure Table of SEXO by empresa SEXO empresa

Frequency Row Pct Col Pct ATLAS S.MALTA LTPARIS IN A. DA STITUTO F 74 66 106 104 21.14 18.86 30.29 29.71 62.71 63.46 65.43 62.65 M 44 38 56 62 22.00 19.00 28.00 31.00 37.29 36.54 34.57 37.35 Total 118 104 162 166

Total

350

200

550

2 Obs 1 2 3 4 5 SEXO F F F F M empresa COUNT 74 66 106 104 44 PERCENT 13.4545 12.0000 19.2727 18.9091 8.0000

ATLAS S.A. MALTA LTDA PARIS INSTITUTO

98 8.3 - Procedimento TABULATE


O procedimento TABULATE monta relatrios com estatticas descritivas num formato tabular. PROC TABULATE [opes] ; CLASS <variveis> ; VAR <variveis> ; BY <variveis> ; TABLE <pgina , linha , coluna> / [opes] ;
opes DATA= Nome do arquivo SAS; CLASS Especifica uma ou mais variveis, numricas ou caracter, que possibilitam o agrupamento de dados.e que sero utilizadas como variveis classificatrias no comando TABLE. OBS: No necessrio executar, antes, um PROC SORT; 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, antes, um PROC SORT; Especifica a regra de formao da tabela; pgina linha coluna Especifica uma varivel ou expresso que ir definir a regra de formao das pginas da tabela; 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; Opes do comando TABLE: elemento*elemento cruzamento elemento elemento concatenao (elemento elemento) agrupamento

VAR

BY

TABLE

opes OBS:

Regras de formao:

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

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

Ex.60:

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

Ex.61:

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

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

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

102 Ex.64:
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 SAL ; TABLE SEXO="Sexo"*EMPRESA="Empresa" ALL="Total", (N*f=6. PCTN="%"*f=commax6.2 SAL=""*MEAN="Mdia de Salrio"*f=commax12.2) ; RUN ; OBS: *f= *= Formata a varivel Especifica um LABEL para a varivel
Relatrio com a Mdia de Salrio e a Distribuio Percentual dos Funcionrios por Empresa Mdia de N % Salrio Sexo Empresa F 74 13,45 . ATLAS S.A. 66 12,00 3.707,33 MALTA LTDA 106 19,27 30.437,38 PARIS INSTITUTO 104 18,91 9.935,85 M 44 8,00 . ATLAS S.A. 38 6,91 3.482,55 MALTA LTDA 56 10,18 31.465,62 PARIS INSTITUTO 62 11,27 10.157,55 Total 550100,00 16.299,47

103 5 LABORATRIO
Utilizao dos procedimentos estatsticos bsicos.
Utlizando 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 arquivo SAS, permanente, no diretrio c:\curso\sas, com a mdia , o valor mximo e o valor mnimo da varivel IDADE, classificados por EMPRESA. - Este programa no deve gerar relatrio; - Dever gerar trs variveis referentes a mdia, o valor mximo e o valor mnimo da idade: MED_ID, MAX_ID e MIN_ID; 3 - Com o arquivo gerado no item anterior, crie um programa que emita um relatrio ordenado por EMPRESA. - As variveis devero ser rotuladas: MED_ID="Idade Mdia" MAX_ID="Idade Mxima" MIN_ID="Idade Mnima" - Os resultados numricos devero aparecer formatados com pontos e vrgula.e com no mximo duas casas decimais; - Dever ser criado um ttulo: "Variao da Idade por Empresa" 4 - Gere um relatrio apenas coma mdia e somatrio de todas as variveis numricas do arquivo SAS, CADASTRO ordenados por EMPRESA. 5 - Gere um relatrio com as tabelas de frequncia de SEXO, IDADE, ESTADO CIVIL, FILHOS, EMPRESA e CARGO. 6 - Gere um relatrio com uma tabela de frequncia de SEXO versus IDADE. 7 - Gere um relatrio com uma tabela de frequncia, "listada", de SEXO versus IDADE, e que no contenha as colunas de valores acumulativos e gere um arquivo de sada com os resultados. Imprima o arquivo gerado com a PROC PRINT.

104
8 - Gere um relatrio com duas tabelas de frequncia de ESTADO CIVIL versus FILHOS e SEXO versus EMPRESA na mesma PROC. 9 - 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 utilizado a opo MEAN para formar as colunas; (Utilize o procedimento TABULATE) 10 - 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; - Dever ser utilizado as opes MEAN e SUM para formar as colunas - Tamanho da pgina de 55 linhas e 80 colunas; (Utilize o procedimento TABULATE) 11 - Acrescente a tabela do relatrio anterior : - Um totalizador na linha e na coluna: ALL; - Rotule todos os elmentos (variveis, estatsticas e totalizadores); - Formate os resultados numricos com pontos, vrgula e duas casas 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.

105
9 - RECURSO DE FORMATAO ESPECIAL 9.1 - Procedimento FORMAT

O procedimento FORMAT permite que o usurio crie os seus prprios formatos de leitura e impresso, para variveis numricas e caracter. PROC FORMAT ; VALUE <nome> [( opes )] <intervalo> = "<descrio>" ;
VALUE Comando que define um formato diferente para os valores de uma varivel numrica ou caracter. -Nome do formato at 8 caracteres; -Nome de formatos para serem aplicados em variveis caracter, obrigatriamente, devero iniciar com $ ; -Nomes de formato no podem terminar com nmeros. MULTILABEL NOTSORTED Permite sobreposio de intervalos; No ordenar as descries;

nome

opes

OBS: A opo MULTILABEL s funcionar em procedimentos que possuem o comando CLASS, que permite ativar o uso do formato, com sobreposio, atravs da sua opo MLF CLASS <varivel> / MLF intervalo -Especifica um valor, ou intervalos, que os valores de uma varivel poder assumir durante a formatao. -Valores ou intervalos de variveis caracter, devero vir entre aspas. -Parmetros epeciais so utilizados para definir limites de intervalos: LOW Menor valor encontrado; HIGH Maior valor encontrado; OTHER 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 200 caracteres entre aspas;

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

107
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 a varivel PESO: 50-<70 = "50 a 69" 70-<80 = "70 a 79" 80-<100 = "80 a 99" Criar rtulos para a 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 a varivel ESTADO CIVIL: "1" = "SOLTEIRO" "2" = "CASADO" "3" = "SEPARADO" Criar faixas para a 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" Do menor ao maior valor, missing=Total missing=Desempregado; OBS: Os dois ltimos intervalos so um sobreposio

108
2 - Gere um relatrio com tabelas de frequncia 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 frequncia de IDADE versus ESTADO CIVIL, com os dados formatados (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; - Comando CLASS com a opo MLF, apenas para SALARIO).

109 10 - COMBINAO DE ARQUIVOS SAS


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

ARQ1

ARQ2

DATA ARQ3 ; SET ARQ1 ARQ2 ; RUN ; ARQ3

ARQ1

ARQ2

110
Ex.66:
LIBNAME IN "A:\" ; DATA IN.ARQ1 ; INFILE A:\ARQ1.TXT INPUT NOME $ 1-6 @8 SEXO $1. ; RUN; Arquivo: ARQ1.TXT
01 M S P C 02 A A A E 03 R N U L 04 C D L S 05 I R A O 06 O A 07 08 M F F M

DATA IN.ARQ2 ; INFILE C:\ARQ2.TXT INPUT NOME $ 1-7 IDADE 2. ; RUN ; Arquivo: ARQ2.TXT
01 M C P S 02 A E A A 03 R L U N 04 C S L D 05 I O A R A 06 O 07 08 2 2 1 1 09 5 2 8

DATA IN.CONCAT ; SET IN.ARQ1 IN.ARQ2 ; PROC PRINT DATA=IN.CONCAT ; RUN ; SAS OBS 1 2 3 4 5 6 NOME MARCIO SANDRA PAULA CELSO MARCIO CELSO SEXO M F F M

IDADE . . . . 25 22

7 8

PAULA SANDRA

18 15

111
10.2 - 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

112
Ex.67:
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 ; PROC PRINT DATA=IN.ORD ; RUN ; SAS OBS 1 2 3 4 NOME CELSO MARCIO PAULA SANDRA SEXO M M F F IDADE 22 25 18 15

113
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 relatorio 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 o resultado. (Utilize os comandos DATA, MERGE e BY) OBS: Lembre-se os arquivos devem estar ordenados pela varivel comum.

114

11 - BIBLIOGRAFIA
MANUAIS: SAS Introductory Guide SAS Institute Inc. SAS Circle, Cary - NC Terceira Edio SAS Language Version 8 SAS Institute Inc. SAS Circle, Cary - NC Primeira Edio SAS Procedures Guide Version 8 SAS Institute Inc. SAS Circle, Cary - NC Terceira Edio SAS Guide to TABULATE Processing SAS Institute Inc. SAS Circle, Cary - NC 1987 Edition Curso de SAS/BSICO Soft Consultoria