Você está na página 1de 108

Universidade Estadual de Campinas

SAS Programao I
Ricardo Almeida de Mendona Ksel

Verso: Abril/2008

Centro Nacional de Processamento de Alto Desempenho - SP


CONTEDO
1 - HISTRICO pag.04
2 - CURIOSIDADES pag.04
3 - DEFINIO BSICA pag.05
4 - COMERCIALIZAO pag.06
4.1 - Mdulos SAS pag.06
4.2 - Soluo de Negcios pag.07
5 - CONCEITOS BSICOS pag.08
6 - ARQUIVOS SAS pag.09
7 - ESTRUTURA DOS ARQUIVOS SAS pag.10
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS pag.11
9 - SINTAXE DOS COMANDOS pag.12
10 - EXECUO pag.13
10.1 - Modo Interativo (Ambiente WINDOWS) pag.13
10.2 - Modo No Interativo (Ambiente de COMANDOS) pag.20
11 - ESTRUTURA DATA STEP pag.21
11.1 - Introduo pag.21
11.2 - Comando LIBNAME pag.23
11.3 - Comando DATA pag.24
11.4 - Comando INFILE pag.25
11.5 - Comando SET pag.26
11.6 - Comando INPUT pag.27
11.6.1 - INPUT COLUNADO pag.28
11.6.2 - INPUT FORMATADO pag.29
11.6.3 - Descrio de um Campo Data pag.30
11.6.4 - Controles Especiais do Comando INPUT pag.32
11.6.5 - Detalhes do Comando INPUT pag.33
1 LABORATRIO pag.34
12 ESTRUTURA PROC STEP pag.35
12.1 - Introduo pag.35
12.1.1 - Comando VAR pag.36
12.1.2 - Comando BY pag.36
12.1.3 - Comando TITLE pag.37
12.1.4 - Comando FOOTNOTE pag.37
12.2 - Procedimento PRINT pag.38
12.3 - Procedimento SORT pag.40
13 - ARQUIVO DE MENSAGENS - "SAS Log" pag.42
2 LABORATRIO pag.44
14 - COMANDOS BSICOS DE PROGRAMAO SAS pag.46
14.1 - Comando de Atribuio (=) pag.46
14.2 - Comando RETAIN pag.48
14.3 - Comando IF-THEN/ELSE pag.49
14.4 - Comando WHERE pag.52
14.5 - Comando DO/END pag.53
14.6 - Comando LENGTH pag.54
14.7 - Comando DO/END Iterativo pag.55

2
14.8 - Comando DO/WHILE pag.56
14.9 - Comando DO/UNTIL pag.57
14.10 - Comandos DROP e KEEP pag.58
14.11 - Opes de Arquivos SAS pag.59
14.12 - Comando DELETE pag.60
14.13 - Comando OUTPUT pag.61
3 LABORATRIO pag.63
15 - FUNES DO SAS pag.66
15.1 - Introduo pag.66
15.2 - Funes de Tratamento de Caractere pag.67
15.2.1 - Funo UPCASE pag.67
15.2.2 - Funo LOWCASE pag.67
15.2.3 - Funo SUBSTR pag.68
15.2.4 - Funo COMPRESS pag.69
15.2.5 - Funo LENGTH pag.69
15.2.6 - Funo INDEX pag.70
15.3 - Funes de Truncamento pag.72
15.3.1 - Funo INT pag.72
15.3.2 - Funo ROUND pag.72
15.4 - Funes Estatsticas Descritivas pag.74
15.4.1 - Funo SUM pag.74
15.4.2 - Funo MEAN pag.74
15.5 - Funes de Tratamento de Data e Hora pag.76
15.5.1 - Funo MDY pag.76
15.5.2 - Funes: DAY, MONTH, YEAR pag.76
15.5.3 - Funo TODAY pag.77
15.5.4 - Funo TIME pag.77
15.5.5 - Funes: HOUR, MINUTE, SECOND pag.77
4 LABORATRIO pag.79
16 - COMANDOS DE CONFIGURAO pag.80
16.2 - Comando LABEL pag.82
16.3 - Comando FORMAT pag.83
16.4 - Comando ODS pag.84
17 - PROCEDIMENTOS ESTATSTICOS BSICOS pag.86
17.1 - Procedimento MEANS pag.86
17.2 - Procedimento FREQ pag.89
17.3 - Procedimento TABULATE pag.94
5 LABORATRIO pag.99
18 - RECURSO DE FORMATAO ESPECIAL pag.100
18.1 - Procedimento FORMAT pag.100
6 LABORATRIO pag.102
19 - COMBINAO DE ARQUIVOS SAS pag.103
19.1 - Concatenao pag.103
19.2 - Combinao Ordenada pg.105
7 LABORATRIO pag.107
20 - BIBLIOGRAFIA pag.108

3
1 - HISTRICO

Dcada de 60;

North Caroline University;

Censo Agro-pecurio Norte-americano;

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

SAS Institue Inc. (1975);

2 - CURIOSIDADES

40.000 Instalaes, 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.

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

5
4 - COMERCIALIZAO

4.1 - Mdulos do SAS

SAS/BASE Mdulo bsico, obrigatrio em toda


instalao;

SAS/STAT Mdulo estatstico;

SAS/GRAPH Mdulo grfico ( Histogramas, plots, ... );

SAS/OR Mdulo de anlise e pesquisa operacional


(Programao linear, Anlise de Caminho
Crtico);

SAS/QC Mdulo para anlise de controle de


qualidade;

SAS/ETS Mdulo de econometria (Sries Temporais,


Modelagem de Equaes Simultneas);

SAS/IML Mdulo para anlise e operao de matrizes;

SAS/ACCESS Mdulo para acesso aos diversos tipos de


Banco de Dados;

SAS/CONNECT Mdulo para conexo entre ambientes


operacionais heterogneos;

SAS/AF Mdulo para desenvolvimento de aplicaes;

SAS/FSP Mdulo para facilitar o acesso a arquivos com


programao de telas;
6
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

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

8
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 DATA DADO


BRUTO STEP SAS

Os arquivos SAS podem ser temporrios (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.

9
7 - ESTRUTURA DOS ARQUIVOS SAS

O arquivo SAS um conjunto de dados arrumados num formato de


tabela.

NOME SEXO IDADE ALTURA

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

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 32K caracteres - 32KBytes)


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.

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

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

13
14
JANELA DE OPES DE CONFIGURAO

Tools ==> Options ==> System...

15
16
OPES DE CONFIGURAO DO EDITOR

Tools ==> Options ==> Enhanced Editor...

17
18
CONFIGURAO DE TECLADO

Tools ==> Options ==> Keys

19
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 Possui os resultados do programa;

<programa>.log 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.

20
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 seguem uma hierarquia, 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 sequencialmente, 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 -Funcionalidade: durante a compilao;


Comandos de Execuo -Funcionalidade: durante a execuo.

OBS: Comandos de declarao no possuem nenhuma ao


durante a execuo.
21
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

22
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 (diretrios), para os
arquivos SAS (Data Set's);

- Define o primeiro nvel de um nome de arquivo, a biblioteca SAS;

[biblioteca].<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 <biblioteca> "<diretrio>" ;

Biblioteca Palavra de no mnimo 1 e no mximo 8 caracteres,


que identifica o primeiro nvel em um nome de
arquivo.

diretrio Nome de um diretrio que j exista no seu


ambiente.

OBS: O SAS define uma biblioteca padro, temporria, de nome work.

Ex.3:

LIBNAME IN "C:\ALUNO" ;
DATA IN.EXEMPLO ;
INFILE "A:\CADASTRO" ;
INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ;

PROC PRINT DATA=IN.EXEMPLO NOOBS ;


VAR NOME ENDERECO ;
RUN ;
23
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 <bib>.<nome do arquivo> ;

Ex.4:

DATA ENDERECO ;

DATA ARQ1 ARQ2 ARQ3 ;

DATA ENT.CADASTRO ;

DATA ;

DATA _NULL_;

OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir


utilizar a biblioteca padro, tambm chamada de biblioteca temporria
(WORK ).

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

. . .
. . .
. . .

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

26
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 sequncial) at


encontrar "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

27
11.6.1 - INPUT COLUNADO

- L as variveis especificando a sua posio na linha de dados


(posio inicial e posio final). As variveis devem estar
alinhadas e colunadas no arquivo de leitura de dados.

INPUT <varivel> [$] <incio>-<fim> [.decimal] ;


varivel Nome da varivel, que ser associada a uma coluna de
dados.

$ Caractere opcional que indica que a varivel s ir conter


dados alfanumricos. Sem o $, significa que a varivel ser
numrica.

incio Valor que indica a posio inicial da varivel na linha de


dados.

fim Valor que indica a posio final da varivel na linha de


dados.

.decimal Valor opcional, indica o nmero de posies decimais de


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

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

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

$ Caractere opcional que indica que a varivel s ir conter


dados alfanumricos. Sem o $, significa que a varivel ser
numrica.

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


dados.

w.d Valor que indica o tamanho de um campo numrico com


casas decimais.

formatow.d 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.

29
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. ==> 01JAN1960


DDMMYY10. ==> 01/01/1960

Formato padro de uma constante data no SAS:

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

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 J 2 0 4 5 6 3 0 0 6 , 7 3 9 , 9 9 2 8 8 F 1 . 2 E 5
S P 1 1 5 0 0 0 0 0 9 , 4 6 4 , 2 6 5 6 C C 1 2 5 E 5

DATA EXEMPLO2 ;
INFILE A:\NUMEROS.PRN;
INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ;
RUN;
PROC PRINT ; RUN ;

SAS

OBS UF CEP POP VALOR1 VALOR2

1 RJ 20456300 6739992 2191 120000


2 SP 11500000 9464265 1740 12500000

31
11.6.4 - Controles Especiais do Comando INPUT

Indicador de COLUNA ( @ )

@n Move a leitura para a coluna n ;

Indicador de LINHA ( / )

/ Avana a leitura em um registro;

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

1 1 1 1 1 B B B B C C C C
D D D D
E E E E F F
2 2 2 2 2 b b b b c c c c
d d d d
e e e e f f

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

The SAS System

OBS A B C D E F

1 11111 BBBB CCCC DDDD EEEE FF


2 22222 bbbb cccc dddd eeee ff

32
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, 32K de 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).

- 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


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

33
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 Tipo do Tamanho do Decimais Posio Detalhe


Campo Campo Campo Inicial
NOME Caractere 30 1

SEXO Caractere 1 31

IDADE Numrico 2 32

PESO Numrico 6 2 34

ALTURA Numrico 4 2 40

ANIVERSARIO Numrico 10 44 Campo formatado: Ex. 18/01/2005

ESTADO CIVIL Caractere 1 54

FILHOS Numrico 2 55

RG Caractere 15 57

CPF Caractere 11 72

EMPRESA Caractere 15 83

FUNCAO Caractere 12 98

ADMISSAO Numrico 9 110 Campo formatado: Ex 18JAN2005

SALARIO Numrico 12 2 119 Campo formatado: Ex. 3.548,25

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

34
12 - ESTRUTURA PROC Step

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

opes Parmetros opcionais de configurao para execuo


do procedimento.

comando Comandos de detalhamento na execuo do


procedimento.

RUN Comando para execuo do procedimento SAS.


Necessrio no ltimo procedimento do programa
SAS.

35
12.1.1 - Comando VAR

- Tipo: Comando de declarao;

- Uso: Proc Step

- Comando comum maioria das PROCS. Determina as


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;

- Determina uma ou mais 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.

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

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

PROC PRINT [opes] ;


VAR <lista de variveis> ;
BY <lista de variveis> ;
SUM <lista de variveis> ;

opes DATA= Nome do arquivo SAS;

DOUBLE Espacejamento duplo;

NOOBS Suprime a coluna com o nmero de cada


observao do arquivo;

LABEL Imprime os "label's" das variveis;

VAR Determina uma lista de variveis que sero


impressas;

BY Determina a quebra ou agrupamento do


relatrio, por uma ou mais variveis;

SUM Determina uma ou mais variveis numricas


que sero totalizadas;

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

Relatrio de Funcionrios

NOME FUNCAO

ANTUNES ANALISTA
TERESA ANALISTA
CLAUDIA PROG
MARCOS PROG
JULIO 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 NOME FUNCAO SALARIO

1 ANTUNES ANALISTA 1800


2 TERESA ANALISTA 1650
3 CLAUDIA PROG 1200
4 MARCOS PROG 1200
5 JULIO OPER 850
=======
6700

FONTE: DH

39
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 DATA= Nome do arquivo SAS para ser ordenado;

OUT= 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;

NODUPKEY Opo que elimina os registros com chaves


duplicadas;

DUPOUT= Nome para arquivo com os registros duplicados;

BY Determina 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.

40
Ex.14:

PROC SORT DATA=EXEMPLO OUT=ORDENA ;


BY FUNCAO ;
RUN ;
PROC PRINT DATA=ORDENA NOOBS ;
BY FUNCAO ;
VAR NOME SALARIO ;
SUM SALARIO ;
RUN ;

The SAS System

----------------------------- FUNCAO=ANALISTA -----------------------------

NOME SALARIO

ANTUNES 1800
TERESA 1650
-------
FUNCAO 3450

------------------------------- FUNCAO=OPER -------------------------------

NOME SALARIO

JULIO 850

------------------------------- FUNCAO=PROG -------------------------------

NOME SALARIO

CLAUDIA 1200
MARCOS 1200
-------
FUNCAO 2400
====
6700

41
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 "C:\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
SAS Log
NOTE: Copyright(c) 1989 by SAS Institute Inc., Cary, NC USA.
NOTE: SAS (r) Proprietary Software Release 8.2
Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS, Site 0004267003.

1 DATA EXEMPLO1 ;
2 INFILE "C:\DADOS.TXT" ;
3 INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;

NOTE: The infile "C:\DADOS.TXT" is:


FILENAME=C:\DADOS.TXT,
RECFM=V,LRECL=132

NOTE: 5 records were read from the infile "C:\DADOS.TXT".


The minimum record length was 16.
The maximum record length was 23.
NOTE: The data set WORK.EXEMPLO1 has 5 observations and 4 variables.
NOTE: The DATA statement used 2.68 seconds.

4 PROC PRINT DATA=EXEMPLO1 NOOBS ;


5 VAR NOME FUNCAO ;
6 RUN ;

NOTE: The PROCEDURE PRINT used 0.55 seconds.

42
Ex.16:

DATA EXEMPLO1 ;
INFILE 'C:\TEMP\ LEITURA.DAT';
INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ;
RUN;

PROC PRINT DATA=EXEMPLO1 NOOBS


VAR NOME FUNCAO ;
RUN ;

SAS Log

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

20 RUN;

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

21
22 PROC PRINT DATA=EXEMPLO1 NOOBS
NOTE: SCL source line.
23 VAR NOME FUNCAO ;
--- ----
22 202
ERROR 22-322: Syntax error, expecting one of the following: ;, DATA, DOUBLE, HEADING, LABEL, N, NOOBS, OBS, ROUND,
ROWS, SPLIT, STYLE, UNIFORM, WIDTH.
ERROR 202-322: The option or parameter is not recognized and will be ignored.
24 RUN ;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used:
real time 0.01 seconds
cpu time 0.01 seconds

43
Ex.17:

DATA EXEMPLO1 ;
INFILE 'C:\ TEMP\LEITURA.DAT';
INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ;
RUN;

PROC PRINT DATA=EXEMPLO1 NOOBS ;


VAR NOME FUNCAO SALARIO ;
SUM SALARIO ;
RUN ;

SAS Log

58 DATA EXEMPLO1 ;
59 INFILE 'C:\TEMP\LEITURA.DAT';
60 INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ;
61 RUN;

NOTE: The infile 'C:\TEMP\LEITURA.DAT' is:


File Name=C:\TEMP\LEITURA.DAT,
RECFM=V,LRECL=256

NOTE: 5 records were read from the infile 'C:\TEMP\LEITURA.DAT'.


The minimum record length was 16.
The maximum record length was 23.
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
NOTE: The data set WORK.EXEMPLO1 has 4 observations and 4 variables.
NOTE: DATA statement used:
real time 0.02 seconds
cpu time 0.01 seconds

62
63 PROC PRINT DATA=EXEMPLO1 NOOBS;
64 VAR NOME FUNCAO SALARIO ;
ERROR: Variable FUNCAO not found.
65 SUM SALARIO;
ERROR: Variable SALARIO in list does not match type prescribed for this list.
66 RUN ;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used:
real time 0.01 seconds
cpu time 0.01 seconds

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

45
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 Nome com no mximo 32 caracteres.


expresso 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 ; Potenciao;
y=-x ; Mudana de sinal;

- Constantes :

N=0 ; Constante numrica; SEXO="F" ; Constante caractere;

- Concatenao de caracteres : ||

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

46
Ex.18:
LIBNAME ARQ "C:\SAS\TESTE" ;
DATA ARQ.LUCROS ;
INFILE C:\ DADOS\NUMEROS.TXT;
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
VAL_DOL = 0.98 ;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
DOLLAR = ( RECEITA - DESPESAS ) / VAL_DOL ;
RUN;

Arquivo: NUMEROS.TXT
01 02 03 04 05 06 07 08 09 10 11 12
9 4 5 6 5 0 1 0 5 0
9 5 6 2 8 0 1 1 4 0
9 6 8 4 5 0 2 4 5 0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ;


TITLE "Analise Contbil" ;
VAR ANO RECEITA DESPESAS LUCRO DOLLAR ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;

Analise Contbil

ANO RECEITA DESPESAS LUCRO DOLLAR

1994 5650 1050 4600 4693.8775

1995 6280 1140 5140 5244.8979

1996 8450 2450 6000 6122.4489


===== ==== ===== =========
20380 4640 15740 16061.2240

47
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 ANO RECEITA DESPESAS LUCRO DOLLAR


1 1994 5650 1050 4600 4693.8775
2 1995 6280 1140 5140 5244.8979
3 1996 8450 2450 6000 6122.4489
===== ==== ===== =========
20380 4640 15740 16061.2240

48
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 Operadores Lgicos

GT > maior que AND & e, ambos


LT < menor que OR | ou, um ou outro
EQ = igual a NOT ~ no, negao
LE <= menor ou igual a
GE >= maior ou igual a
NE ~= no igual (diferente)
NL no menor
NG no maior
IN esta no conjunto

49
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" ;
RUN;

Arquivo: NOTAS.TXT
01 02 03 04 05 06 07 08 09 10 11
V I V I A N E 2 . 5
L I D I A 9 . 5
P A U L O 6 . 8
C L A U D I O 6 . 8
L U I Z 5 . 5

PROC PRINT NOOBS ;


RUN ;
The SAS System

NOME NOTA CONCEITO

VIVIANE 2.5 A
LIDIA 9.5 A
PAULO 4.5 A
CLAUDIO 6.8 A
LUIZ 5.5 A

O que est errado ???

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

50
Ex.22: Operador Lgico
LIBNAME TESTE "A:\" ;
DATA TESTE.CLASSE ;
INFILE C:\ ESCOLA \CLASSE.TXT;
INPUT NOM E $ 1-7 SEXO $ 8 IDADE 10-11 @13 ALTURA 4.2 ;
IF (SEXO="1" AND ALTURA<1.55) OR (SEXO="1" AND IDADE<12)
THEN CLASSE="100" ;
ELSE IF (SEXO="2" AND ALTURA<1.55) OR (SEXO="2" AND IDADE<12)
THEN CLASSE="200" ;
ELSE CLASSE="300" ;
RUN;
Arquivo: CLASSE.TXT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

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

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

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

L U I S 2 1 4 1 . 6 0

PROC PRINT NOOBS ;


VAR NOME CLASSE ;
RUN ;
The SAS System

NOME CLASSE

PAULA 100
FLAVIA 300
MARCOS 200
LUIS 300

Ex.23: Operador Lgico

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

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

51
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 entre um e outro


CONTAINS ? 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;
52
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;


<comandos> ;
END ;
Ex.25:
DATA TRABALHO ;
INFILE "A:\EMPRESA.DAT" ;
INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;
IF DEP_NO="201" THEN DO ;
DEP="VENDAS" ;
SAL=COM+SALARIO ;
END ;
ELSE DO ;
DEP="ADMINISTRATIVO" ;
SAL=SALARIO ;
END ;
PROC PRINT NOOBS ;
RUN ;

The SAS System

NOME DEP_NO COM SALARIO DEP SAL

CARLOS 201 1500 1500 VENDAS 3000


ELIANE 101 . 1800 ADMINI 1800
ALVARO 101 . 3800 ADMINI 3800
FATIMA 201 500 1500 VENDAS 2000

53
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 ;
PROC PRINT NOOBS ;
RUN ;

The SAS System

NOME DEP_NO COM SALARIO DEP SAL

CARLOS201 1500 1500 VENDAS 3000


ELIANE 101 . 1800 ADMINISTRATIVO 1800
ALVARO 101 . 3800 ADMINISTRATIVO 3800
FATIMA 201 500 1500 VENDAS 2000

54
14.7 - Comando DO/END Iterativo

- Tipo: Comando de execuo;

- Uso: Data Step;

- Comando utilizado para repetir um grupo de comandos n vezes.

DO <indice>=<incio>TO<fim> [BY] <cont>


[WHILE/UNTIL] <(expresso)>;

indice Varivel auxiliar que armazena o valor da contagem no


"loop".

incio Valor inicial do "loop".

fim Valor final do "loop".

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

expresso Campo opcional que representa uma combinao de


variveis que determinam uma condio para execuo do
"loop", entre parnteses.

Ex.27: Iterativo
DO MES="JAN","FEV","MAR" ; ( 3 vezes )

DO I = 1 TO 120 ; ( 120 vezes )

DO I = 1 TO 120 BY 2 ; ( 60 vezes )

DO I = 120 TO 1 BY -1 ; ( 120 vezes )

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

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

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

55
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 N

55 6

56
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 N

55 6

57
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. 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
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> [( <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
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;

- 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 02 03 04 05 06 07 08 09
1 7 1 0 5 2 5
4 2 5 0 - 6
3 1 5 1 0 0
2 4 0 3
5 1 1 5

PROC PRINT NOOBS ;


RUN ;

The SAS System

DEP UNIDADE CUSTO CUSTOUNI

17 10 525 52.5
31 5 100 20.0
5 1 15 15.0

60
14.13 - Comando OUTPUT

- Tipo: Comando de execuo;

- Uso: Data Step;

- O comando OUTPUT funciona de duas formas:

Determina ao SAS que o registro que est sendo processado


deve ser gravado no arquivo, imediatamente, e 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.

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


e criado pelo comando DATA.

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

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

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

PROC PRINT ; RUN ;

The SAS System

OBS NOME NIVEL SALARIO SAL

1 PAULO 10 1000 1100


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

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 ;

62
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"
63
- Gere um relatrio com os dados deste arquivo;

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.

64
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

TRABALHO Variveis: NOME, RG, CPF, EMPRESA,


FUNCAO, ADMISSAO, SALARIO e TIPO
DE EMPRESA

FAMILIA Pessoas que possuam filhos;

SOLTEIRO Pessoas solteiras;

CHEFE Pessoas que ocupam cargo de chefia


(GERENTE e DIRETOR);

SUB Pessoas que no ocupam cargos de chefia;

- Gere relatrios para ver o contedo de cada arquivo;

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

funo Palavra-chave que identifica a funo a ser processada.

argumento Parmetros de entrada para processamento da funo.

OF Parmetro opcional que indica o processamento num


intervalo de argumentos. Somente para as funes
estatsticas.

Tipos de funes:
- Funes de Tratamento de Caractere;
- 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;

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

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

arg1 Primeiro argumento, determina a varivel ou expresso


caractere cujo contedo ser manipulado.

arg2 Segundo argumento, determina a posio inicial do


contedo da varivel, que ser manipulado.

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

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

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

arg1 Primeiro argumento, determina a varivel ou expresso


caractere cujo contedo ser compactado;

arg2 Segundo argumento, opcional e entre aspas, determina um


ou mais caracteres que sero retirados, individualmente, do
primeiro argumento.

OBS:Se o segundo argumento no for especificado, a


funo assumir o branco como caractere default para
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;

arg Argumento, determina a varivel ou expresso caractere


cujo contedo ser determinado o tamanho;

OBS: O Valor retornado pela funo LENGTH, sempre


ser numrico.

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

arg1 Primeiro argumento, determina a varivel ou expresso


caractere cujo contedo ser manipulado.

arg2 Segundo argumento, determina o caractere, entre aspas,


que se deseja localizar no primeiro argumento.

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

LOCAL
17
13
25
0

70
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 ;
INFILE C:\ ID\RG.DAT;
INPUT RG $ 18. ;
RG=UPCASE(RG);
IF INDEX(RG,S)>0;
RG_NUM=SUBSTR(RG, 1, INDEX(RG,S )-1) ;
RG_SSP=SUBSTR(RG, INDEX(RG,S));
RUN;
Arquivo: RG.TXT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

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

2 3 4 s s p / s p

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

PROC PRINT NOOBS ;


VAR RG_NUM RG_SSP ;
RUN ;

SAS

RG_NUM RG_SSP

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

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

arg1 Varivel ou expresso numrica da qual se deseja


arredondar.

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

72
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 2 6 . 5 4

1 9 7 7 . 0 9

5 5 8 . 8 8

1 5 8 8 . 2 9

PROC PRINT DOUBLE;


RUN ;

The SAS System


13:24 Monday, January 22, 1996

OBS X TRUNCA INTEIRO DEZENA CENTENA DECIMO CENTES MULT5

1 326.54 326 327 330 300 326.5 326.54 325

2 1977.09 1977 1977 1980 2000 1977.1 1977.09 1975

3 558.88 558 559 560 600 558.9 558.88 560

4 1588.29 1588 1588 1590 1600 1588.3 1588.29 1590

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

74
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 3 . 5 2 5 . 2 2 4 . 8 2 5 . 7 2 5 . 8 2 2 . 0

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

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ;


RUN ;

The SAS System


14:18 Monday, January 22, 1996

T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED

23.5 25.2 24.8 25.7 25.8 22.0 147 24.5000

18.5 17.4 18.9 18.9 20.5 20.8 115 19.1667

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

mm Valor numrico que representa o ms;

dd Valor numrico que representa o dia;

yyyy Valor numrico que representa o ano.

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;

data Valor que representa uma data SAS.


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

tempo Valor que representa o tempo no formato SAS.

77
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 0 1 1 1 9 7 6

2 5 0 4 2 0 0 0

1 4 0 8 1 9 3 4

0 8 0 1 1 9 6 7

0 3 0 3 1 9 5 5

TITLE1 Relatrio de Idades;

PROC PRINT;RUN;

Relatrio de Idades

IDADE_ IDADE_
Obs DIA MES ANO ANIV ANO DIA

1 10 11 1976 6158 29 8452


2 25 4 2000 14725 5 -115
3 14 8 1934 -9271 71 23881
4 8 1 1967 2564 39 12046
5 3 3 1955 -1765 51 16375

78
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 Conter os dois ltimos caracteres da varivel CPF;


INTEIRO Conter o valor inteiro da varivel SALARIO;
ARR1 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
com duas casas decimais;
ARR2 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
inteiro;
ARR3 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
mltiplo de 5;
T_EMP Conter o tempo do funcionrio na empresa, em anos;
APOS 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: 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.

79
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/BIN/NO );

DEVICE=WIN Opo que especifica um "driver" para impresso ou sada de relatrio;

OBS=MAX Opo que especifica qual ser o ltimo registro a ser processado;

FIRSTOBS=1 Opo que especifica qual ser o primeiro registro a ser processado;

(NO)DATE Opo que determina a impresso ou no, da data nos relatrios;

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

ERRORS=20 Opo que especifica o nmero mximo de erros a serem exibidos no


LOG;

(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). No windows: 66MBytes;

MEMSIZE= Opo que especifica a quantidade de memria que o sistema SAS poder
utilizar para qualquer processamento. No windows: livre ;

80
Ex.40:

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.41:

LIBNAME ARQ "C:\ALUNO" ;


OPTIONS SORTSIZE=200M PS=60 LS=132 DEVICE=WINPRTM;
PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN;
PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;

O PROCEDIMENTO SORT PODER UTILIZAR ATE 200MBYTES DE MEMRIA


PARA PROCESSAR E SER GERADO UM RELATRIO COM 60 LINHAS E 132 COLUNAS
POR PGINA, NA IMPRESSORA PADRO DO WINDOWS.

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

- DATA Step Permanente, armazenado na estrutura do arquivo;


- PROC Step Temporrio, apenas para a execuo do
procedimento.

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

varivel Nome da varivel na qual ser associado um rtulo


descritivo.
rtulo Descrio, at 256 caracteres, 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 A U L O 5 9 . 0 9 9 . 5
M A R C I O 5 7 . 3 8 3 . 0

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

PROC PRINT NOOBS SPLIT="" ;


RUN ;
The SAS System

NOME ALTURA EM PESO EM


POLEGADAS LIBRAS

PAULO 59.0 99.5


MARCIO 57.3 83.0
SONIA 51.3 50.5
82
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;

- DATA Step Permanente, armazenado na estrutura do arquivo;


- PROC Step Temporrio, apenas para a execuo do
procedimento.

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

varivel Nome da varivel que ser formatada.


formatow.d 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 Formata com pontos e


vrgula (Padro Brasil);
DDMMYYw. Formata um campo data
com /;
Ex.43:
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
Obs NOME Aniversrio Salrio

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


2 SERPA,MARCO 06/02/1941 26.540,67
3 LONAS,PAULO 24/07/1930 55.211,27
4 CERTO,MARCO 03/07/1979 3.121,80
5 BENTES,MARCO 06/06/1967 9.452,31
6 MARUEL,PAULO 18/07/1977 3.288,80
7 LUILA,ROSANE 27/03/1950 25.628,72
8 APARECIDO,ELIANE 17/03/1943 .
9 SAUL,ROSANE 16/03/1957 24.949,40
10 PISCO,ROSANE 04/09/1962 9.710,13

83
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 Gera os resultados no padro html;


PDF Gera os resultados no padro Adobe;
PS Gera os resultados no padro PostScript;
RTF Gera os resultados no padro Rich Text;

opo genrica:

FILE= Determina a localizao e nome do arquivo gerado com o


padro.

OBS: Cada padro de visualizao possui suas prprias opes;

84
Ex.44:
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

Obs NOME Data de Salrio


Aniversrio
1 SONTAS,MARCIO 16/04/1985 3.240,05
2 SERPA,MARCO 06/02/1941 26.540,67
3 LONAS,PAULO 24/07/1930 55.211,27
4 CERTO,MARCO 03/07/1979 3.121,80
5 BENTES,MARCO 06/06/1967 9.452,31
6 MARUEL,PAULO 18/07/1977 3.288,80
7 LUILA,ROSANE 27/03/1950 25.628,72
8 APARECIDO,ELIANE 17/03/1943 .
9 SAUL,ROSANE 16/03/1957 24.949,40
10 PISCO,ROSANE 04/09/1962 9.710,13

85
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= Nome do arquivo SAS para ser processado;


MAXDEC= Especifica o nmero de casas decimais (mximo 8);

CLASS Determina uma ou mais variveis que possibilitam o


agrupamento de dados. OBS: No necessrio executar
um PROC SORT, antes;

VAR Determina as variveis numricas que sero analisadas pelo


procedimento;

BY Determina uma ou mais variveis que possibilitam o


agrupamento de dados. OBS: necessrio executar um
PROC SORT, antes;

86
Ex.45:
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.46:
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
----------------------------------------------------------------------------

87
Ex.47:

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


-------------------------------------------------------------------------------

Ex.48:

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

88
17.2 - Procedimento FREQ

- Procedimento que produz tabelas simples e tabelas cruzadas, da


freqncia de variveis numricas e caractere.

PROC FREQ [opes] ;


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

opes DATA= Nome de um 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 Determina uma ou mais variveis que possibilitam o agrupamento de


dados. OBS: necessrio executar um PROC SORT, antes;

TABLES Determina as variveis e a regra de formao da tabela de freqncia.


Utiliza-se o caractere * para cruzar as 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.
NOCUM No gera as colunas de freqncia e
percentual acumulativo.
NOPERCENT No gera as colunas com percentuais.
NOFREQ No gera a coluna de freqncia.

89
Ex.49:

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

90
Ex.50:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;

The FREQ Procedure

Table of sexo by empresa

sexo empresa

Frequency|
Percent |
Row Pct |
Col Pct |ATLAS S.|MALTA LT|PARIS IN| Total
|A. |DA |STITUTO |
---------+--------+--------+--------+
F | 58 | 101 | 112 | 271
| 13.36 | 23.27 | 25.81 | 62.44
| 21.40 | 37.27 | 41.33 |
| 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+
M | 39 | 73 | 51 | 163
| 8.99 | 16.82 | 11.75 | 37.56
| 23.93 | 44.79 | 31.29 |
| 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+
Total 97 174 163 434
22.35 40.09 37.56 100.00

Frequency Missing = 116

91
Ex.51:

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

92
Ex.52:

TITLE;
OPTIONS NODATE PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / MISSING
NOCUM
NOPERCENT;
RUN;

The FREQ Procedure


Table of sexo by empresa
sexo empresa

Frequency|
Row Pct |
Col Pct | |ATLAS S.|MALTA LT|PARIS IN| Total
| |A. |DA |STITUTO |
---------+--------+--------+--------+--------+
F | 79 | 58 | 101 | 112 | 350
| 22.57 | 16.57 | 28.86 | 32.00 |
| 68.10 | 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+--------+
M | 37 | 39 | 73 | 51 | 200
| 18.50 | 19.50 | 36.50 | 25.50 |
| 31.90 | 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+--------+
Total 116 97 174 163 550

93
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 <pgina , linha , coluna> / [opes] ;

opes DATA= Nome do arquivo SAS;

CLASS Determina uma ou mais variveis, numricas ou caractere, que


possibilitam o agrupamento de dados.e que sero utilizadas como
variveis classificatrias no comando TABLE. OBS: No necessrio
executar um PROC SORT, antes;

VAR Determina as variveis numricas que iro participar de uma anlise


estatstica e que sero utilizadas no comando TABLE;

BY Determina uma ou mais variveis que possibilitam o agrupamento de


dados, com quebra da tabela. OBS: necessrio executar um PROC
SORT, antes;

TABLE Determina a regra de formao da tabela;

pgina Determina uma varivel ou expresso que ir definir a regra de


formao das pginas da tabela;
linha Determina uma varivel ou expresso que ir definir a regra de
formao das linhas da tabela;
coluna Determina uma varivel ou expresso que ir definir a regra de
formao das colunas da tabela;

opes Opes do comando TABLE:

OBS: Regras de formao: elemento*elemento cruzamento


elemento elemento concatenao
(elemento elemento) agrupamento

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

94
Ex.53:
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.54:
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.55:
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|
-------------------------------------------------

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

SEXO M
------------------------------------
| | ALTURA |
| |------------|
| | Mean |
|---------------------+------------|
|EMPRESA | |
|---------------------| |
|ATLAS | 1.82|
|---------------------+------------|
|MANTAS | 1.79|
|---------------------+------------|
|All | 1.80|
------------------------------------

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

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

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

99
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 caractere.

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 at 32 caracteres;


- Nome de formatos para serem aplicados em variveis caractere,
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 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 32K caracteres entre aspas;

100
Ex.59:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="MANHA"
"2"="TARDE"
OTHER="DADO ERRADO" ;

VALUE ALT LOW-<1.50="BAIXO"


1.50-<1.70="MEDIO"
1.70-HIGH="ALTO" ;

PROC PRINT DATA=ARQ.DADOS ;


FORMAT TURNO $TUR.
ALTURA ALT. ;
RUN ;

The SAS System


15:01 Tuesday, January 30, 1996

OBS NOME SEXO IDADE ALTURA PESO TURNO

1 Alfredo M 25 ALTO 80 MANHA


2 Alicia F 22 ALTO 65 MANHA
3 Carol F 22 MEDIO 65 MANHA
4 Paulo M 29 ALTO 90 MANHA
5 Maria F 20 MEDIO 70 MANHA
6 Ricardo M 35 ALTO 83 MANHA
7 Tomas M 26 ALTO 75 MANHA
8 Joao M 38 ALTO 90 MANHA
9 Marcia F 18 MEDIO 50 MANHA
10 Ligia F 19 ALTO 80 MANHA
11 Laura F 18 MEDIO 69 MANHA
12 Paula F 21 MEDIO 58 MANHA
13 Carlos M 21 MEDIO 55 TARDE
14 Jaime M 28 ALTO 75 TARDE
15 Joice F 25 ALTO 60 TARDE
16 Filipe M 32 ALTO 110 TARDE
17 Roberto M 33 ALTO 89 TARDE
18 Lia F 36 MEDIO 76 TARDE

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

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

ARQ1 ARQ2

DATA ARQ3;
SET ARQ1 ARQ2;
RUN;

ARQ3

ARQ1

ARQ2

103
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 A R C I O M
S A N D R A F
P A U L A F
C E L S O M

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

Arquivo: ARQ2.TXT
01 02 03 04 05 06 07 08 09
M A R C I O 2 5
C E L S O 2 2
P A U L A 1 8
S A N D R A 1 5

DATA IN.CONCAT ;
SET IN.ARQ1 IN.ARQ2 ;
RUN;

PROC PRINT DATA=IN.CONCAT ;


RUN ;
SAS

OBS NOME SEXO IDADE

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

104
19.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

105
Ex.61:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;

PROC SORT DATA=IN.ARQ1 ; BY NOME ;


PROC SORT DATA=IN.ARQ2 ; BY NOME ;

DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;

PROC PRINT DATA=IN.ORD ; RUN ;

SAS

OBS NOME SEXO IDADE

1 CELSO M 22
2 MARCIO M 25
3 PAULA F 18
4 SANDRA F 15

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

107
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

108

Você também pode gostar