Escolar Documentos
Profissional Documentos
Cultura Documentos
SAS Programao I
Ricardo Almeida de Mendona Ksel
Verso: Maro/2008
CONTEDO
1 - HISTRICO
2 - CURIOSIDADES
3 - DEFINIO BSICA
4 - COMERCIALIZAO
4.1 - Mdulos SAS
4.2 - Soluo de Negcios
5 - CONCEITOS BSICOS
6 - ARQUIVOS SAS
7 - ESTRUTURA DOS ARQUIVOS SAS
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS
9 - SINTAXE DOS COMANDOS
10 - EXECUO
10.1 - Modo Interativo (Ambiente WINDOWS)
10.2 - Modo No Interativo (Ambiente de COMANDOS)
pag.04
pag.04
pag.05
pag.06
pag.06
pag.07
pag.08
pag.09
pag.10
pag.11
pag.12
pag.13
pag.13
pag.20
pag.21
pag.21
pag.23
pag.24
pag.25
pag.26
pag.27
pag.28
pag.29
pag.30
pag.32
pag.33
pag.34
pag.34
pag.35
pag.35
pag.36
pag.36
pag.37
pag.39
pag.41
pag.44
pag.45
pag.46
pag.46
pag.48
pag.49
pag.52
pag.53
pag.54
pag.55
2
15 - FUNES DO SAS
15.1 - Introduo
15.2 - Funes de Tratamento de Caractere
15.2.1 - Funo UPCASE
15.2.2 - Funo LOWCASE
15.2.3 - Funo SUBSTR
15.2.4 - Funo COMPRESS
15.2.5 - Funo LENGTH
15.2.6 - Funo SCAN
15.2.7 - Funo INDEX
15.3 - Funes de Truncamento
15.3.1 - Funo INT
15.3.2 - Funo ROUND
15.4 - Funes Estatsticas Descritivas
15.4.1 - Funo SUM
15.4.2 - Funo MEAN
15.5 - Funes de Tratamento de Data e Hora
15.5.1 - Funo MDY
15.5.2 - Funes: DAY, MONTH, YEAR
15.5.3 - Funo TODAY
15.5.4 - Funo TIME
15.5.5 - Funes: HOUR, MINUTE, SECOND
15.6 - Funes Macro
15.6.1 - Funo %SYSFUNC
4 LABORATRIO
16 - COMANDOS DE CONFIGURAO
16.2 - Comando LABEL
16.3 - Comando FORMAT
16.4 - Comando ODS
20 - BIBLIOGRAFIA
pag.56
pag.57
pag.58
pag.59
pag.60
pag.61
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.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.113
pag.114
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
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
Gerenciamento de Campanha, Data Mining);
Risco,
4 - COMERCIALIZAO
4.1 - Mdulos do SAS
SAS/BASE
Mdulo bsico,
instalao;
obrigatrio
SAS/STAT
Mdulo estatstico;
SAS/GRAPH
SAS/OR
SAS/QC
Mdulo para
qualidade;
SAS/ETS
SAS/IML
SAS/ACCESS
anlise
de
em
controle
toda
de
ambientes
SAS/AF
SAS/FSP
Financial Management
http://www.sas.com/offices/latinamerica/brazil/solutions/financial/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
5 - CONCEITOS BSICOS
DATA SET
OBSERVAO
JOB SAS
DATA STEP
PROC STEP
6 - ARQUIVOS SAS
DADO
BRUTO
DATA
STEP
DADO
SAS
SEXO IDADE
M
M
M
.
.
.
F
F
12
25
30
.
.
.
28
22
ALTURA
1.70
1.65
1.80
1.68
1.75
Dados
10
- Possuir de 1 32 caracteres;
-
Ex.1:
DATA EXEMPLO1 ;
INFILE C:\TEMP\CADASTRO.TXT;
INPUT PRIMEIRO_NOME $ 1-8 SEXO $ 10 IDADE 13-14
RUN;
ALTURA 16-19 ;
11
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
15
16
17
18
CONFIGURAO DE TECLADO
Tools ==> Options ==> Keys
19
<programa>.log
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
22
diretrio
Ex.4:
DATA ENDERECO ;
DATA ARQ1 ARQ2 ARQ3 ;
DATA ENT.CADASTRO ;
DATA ;
DATA _NULL_;
24
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
Ex.6:
DATA EXEMPLO ;
SET CADASTRO ;
.
.
.
26
- INPUT LISTADO
- INPUT COLUNADO
- INPUT FORMATADO
27
incio
fim
.decimal
Ex.7:
1
10
11
12
F
A
O
13
14
15
16
17
18
19
20
DATA FICHA ;
INFILE A:\CADASTRO.TXT;
INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ;
RUN;
28
w.
w.d
formatow.d
29
==> 01JAN1960
==> 01/01/1960
"01JAN1960"d
30
Ex.8:
1
10
11
12
13
14
15
16
17
18
19
20
DATA FICHA ;
INFILE A:\CADASTRO.TXT;
INPUT NOME $ 8. SEXO $ 1. IDADE 3.
ALTURA 4.2 PESO 4. ;
RUN;
Ex.9:
1
R J
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
1
2
RJ
SP
20456300
11500000
6739992
9464265
VALOR1
VALOR2
2191
1740
120000
12500000
31
Indicador de LINHA ( # , / )
#n
/
Ex.10:
1
11
12
13
14
15
16
17
18
19
20
10
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
11111
22222
BBBB
bbbb
CCCC
cccc
DDDD
dddd
EEEE
eeee
F
FF
ff
D1
DDDD
dddd
32
33
RUN
rotina
opes
Parmetros opcionais de
execuo do procedimento.
comando
configurao
para
34
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;
35
36
DATA=
DOUBLE
Espacejamento duplo;
NOOBS
UNIFORM
LABEL
SPLIT=
VAR
BY
SUM
37
Ex.12:
TITLE "Relatrio de Fucionarios" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
Relatrio de Funcionarios
NOME
FUNCAO
ANTUNES
TERESA
CLAUDIA
MARCOS
JULIO
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
ANTUNES
TERESA
CLAUDIA
MARCOS
JULIO
FUNCAO
ANALISTA
ANALISTA
PROG
PROG
OPER
SALARIO
1800
1650
1200
1200
850
=======
6700
FONTE: DH
38
DATA=
OUT=
duplicadas;
DUPOUT= Nome para arquivo com os registros duplicados;
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
SALARIO
ANTUNES
TERESA
1800
1650
------3450
FUNCAO
SALARIO
850
1200
1200
------2400
====
6700
40
DATA EXEMPLO1 ;
INFILE "C:\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;
41
Ex.16:
DATA EXEMPLO1 ;
INFILE 'C:\TEMP\LEITURA.DAT';
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';
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
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
Tipo do
Campo
Caractere
Tamanho do
Campo
30
Decimais
SEXO
Caractere
31
IDADE
Numrico
32
PESO
Numrico
34
ALTURA
Numrico
40
ANIVERSARIO
Numrico
10
44
ESTADO CIVIL
Caractere
54
FILHOS
Numrico
55
RG
Caractere
15
57
CPF
Caractere
11
72
EMPRESA
Caractere
15
83
FUNCAO
Caractere
12
98
ADMISSAO
Numrico
110
SALARIO
Numrico
12
119
Posio
Inicial
1
Detalhe
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
Move valor;
Adio;
Subtrao;
Multiplicao;
Diviso;
Potenciao;
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
9
9
9
03
04
05
06
07
4
5
5
6
6
2
5
8
08
09
10
11
12
0
0
1
1
0
1
5
4
0
0
Analise Contbil
ANO RECEITA
DESPESAS
LUCRO
DOLLAR
1994
5650
1050
4600
4693.8775
1995
6280
1140
5140
5244.8979
1996
8450
=====
20380
2450
====
4640
6000
=====
15740
6122.4489
=========
16061.2240
47
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;
Analise Contbil
CONT
1
2
3
ANO
1994
1995
1996
RECEITA
5650
6280
8450
=====
20380
DESPESAS
1050
1140
2450
====
4640
LUCRO
4600
5140
6000
=====
15740
DOLLAR
4693.8775
5244.8979
6122.4489
=========
16061.2240
48
<expresso>
[THEN] <comando> ;
[ELSE] <comando> ;
>
<
=
<=
>=
~=
maior que
menor que
igual a
menor ou igual a
maior ou igual a
no igual (diferente)
no menor
no maior
esta no conjunto
Operadores Lgicos
AND & e, ambos
OR
| ou, um ou outro
NOT ~ no, negao
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;
NOTA
CONCEITO
VIVIANE
LIDIA
PAULO
CLAUDIO
LUIZ
2.5
9.5
4.5
6.8
5.5
A
A
A
A
A
50
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
CLASSE
PAULA
FLAVIA
MARCOS
LUIS
100
300
200
300
51
entre um e outro
contm
Ex.24:
DATA TESTE;
SET ARQ.CADASTRO;
WHERE SALARIO BETWEEN 1000 AND 3000;
RUN;
DEP_NO
COM
SALARIO
DEP
SAL
CARLOS
ELIANE
ALVARO
FATIMA
201
101
101
201
1500
.
.
500
1500
1800
3800
1500
VENDAS
ADMINI
ADMINI
VENDAS
3000
1800
3800
2000
53
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
CARLOS 201
ELIANE
ALVARO
FATIMA 201
DEP_NO COM
1500
101
101
.
.
500
SALARIO
DEP
SAL
1500
1800
3800
1500
VENDAS
ADMINISTRATIVO
ADMINISTRATIVO
VENDAS
3000
1800
3800
2000
54
incio
fim
cont
expresso
Ex.27: Iterativo
DO MES="JAN","FEV","MAR" ;
( 3 vezes )
55
Ex.28:
DATA ;
X=0; N=0;
DO WHILE (N LE 5) ; ( Validao no incio. Executa 6 vezes )
X=X+N**2 ;
N=N+1 ;
END ;
RUN;
PROC PRINT;RUN;
SAS System
X
55
56
DO UNTIL <(expresso)> ;
...
END;<== ( Validao no fim )
expresso
Ex.29:
DATA ;
X=0; N=0;
DO UNTIL (N GT 5) ;
X=X+N**2 ;
N=N+1 ;
END ; ( validao no fim. Executa 6 vezes )
RUN;
PROC PRINT;RUN;
SAS System
X
55
57
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
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
02
04
05
07
08
09
03
06
0
3
UNIDADE
10
5
1
CUSTO
525
100
15
CUSTOUNI
52.5
20.0
15.0
60
OUTPUT ;
IF <expresso> THEN OUTPUT ;
IF <expresso> THEN OUTPUT <arquivo> ;
expresso
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;
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
NOME
NIVEL
SALARIO
SAL
1
2
3
4
PAULO
PAULO
MARIA
MARIA
10
10
10
10
1000
1000
800
800
1100
2200
920
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
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
TRABALHO
FAMILIA
SOLTEIRO
Pessoas solteiras;
CHEFE
SUB
de
chefia
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
funo
argumento
OF
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
67
arg1
arg2
arg3
Caractere:
68
arg1
arg2
arg
Ex.35:
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. ;
RG1=0 ; RG2=0 ;
AUX1=COMPRESS ( RG ) ;
AUX2=LENGTH ( AUX1 ) ;
DO I=1 TO AUX2 ;
AUX3=SUBSTR ( AUX1, I, 1 ) ;
IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ;
ELSE RG2=RG2+1 ;
END ;
RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ;
RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 );
RG_SSP = UPCASE ( RG_SSP ) ;
DROP AUX1 AUX2 AUX3 I RG1 RG2 ;
RUN;
Arquivo: RG.TXT
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
RG_SSP
584166
234
22397488
SSP/DF
SSP/SP
SSP/RG
70
arg1
arg2
arg3
71
arg1
arg2
13
25
0
72
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
RG_SSP
584166
234
22397488
SSP/DF
SSP/SP
SSP/RG
73
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
RG_SSP
584166
234
22397488
SSP/DF
SSP/SP
SSP/RG
74
arg1
arg2
75
Ex.40:
DATA DADOS ;
INFILE A:\NUMEROS.DAT;
INPUT X 7.;
TRUNCA = INT ( X ) ;
INTEIRO = ROUND ( X , 1 ) ;
DEZENA = ROUND ( X , 10 ) ;
CENTENA = ROUND ( X , 100 ) ;
DECIMO = ROUND ( X , 0.1 ) ;
CENTES = ROUND ( X , 0.01 ) ;
MULT5=ROUND ( X , 5 ) ;
RUN;
Arquivo: NUMEROS.DAT
01
02
03
04
05
06
07
CENTES
MULT5
326.54
326
327
330
300
326.5
326.54
325
1977.09
1977
1977
1980
2000
1977.1
1977.09
1975
558.88
558
559
560
600
558.9
558.88
560
1588.29
1588
1588
1590
1600
1588.3
1588.29
1590
76
77
Ex.41:
LIBNAME T "C:\" ;
DATA T.TEMP ;
INFILE C:\REGIAO\TEMP.DAT;
INPUT (T1-T6) (4.) ;
TEMPSOMA = SUM ( OF T1-T6 ) ;
TEMPMED = MEAN ( OF T1-T6 ) ;
RUN;
Arquivo: TEMP.DAT
1
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
78
mm
dd
yyyy
<varivel>=DAY(data);
<varivel>=MONTH(data);
<varivel>=YEAR(data);
varivel
data
<varivel>=HOUR(tempo);
<varivel>=MINUTE(tempo);
<varivel>=SECOND(tempo);
varivel
tempo
80
formato
81
10
Obs
DIA
MES
ANO
ANIV
IDADE_
ANO
IDADE_
DIA
1
2
3
4
5
10
25
14
8
3
11
4
8
1
3
1976
2000
1934
1967
1955
6158
14725
-9271
2564
-1765
29
5
71
39
51
8452
-115
23881
12046
16375
82
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
OBS: Utilize as funes SUM e MEAN, para somar e tirar a mdias entre as variveis,
respectivamente.
83
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
DEVICE=WIN
OBS=MAX
FIRSTOBS=1
(NO)DATE
(NO)NUMBER
PAGENO=
LINESIZE=
PAGESIZE=
ERRORS=20
(NO)REPLACE
SORTSIZE=
MEMSIZE=
84
Ex.43:
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 ;
Ex.44:
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;
85
rtulo
Ex.45:
DATA ROTULO ;
INFILE C:\CADASTRO\ROTULO.DAT;
INPUT NOME $6. @8 ALT 4.1 @13 PES 4.1 ;
LABEL ALT = "ALTURA EM POLEGADAS"
PES = "PESO EM LIBRAS" ;
RUN;
Arquivo: ROTULO.DAT
01
02
03
04
05
06
07
08
09
10
11
13
14
15
16
12
PAULO
MARCIO
SONIA
ALTURA EM
POLEGADAS
PESO EM
LIBRAS
59.0
57.3
51.3
99.5
83.0
50.5
86
Ex.46:
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
Obs
1
2
3
4
5
6
7
8
9
10
NOME
Data de
Aniversrio
SONTAS,MARCIO
SERPA,MARCO
LONAS,PAULO
CERTO,MARCO
BENTES,MARCO
MARUEL,PAULO
LUILA,ROSANE
APARECIDO,ELIANE
SAUL,ROSANE
PISCO,ROSANE
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
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
87
opo genrica:
FILE=
88
Ex.47:
ODS HTML FILE="C:\temp\teste.html" STYLE=minimal;
PROC PRINT DATA=ARQ.CADASTRO(OBS=10) LABEL ;
VAR NOME DATA_ANIVERSARIO SALARIO ;
LABEL DATA_ANIVERSARIO="Data de Aniversrio"
SALARIO="Salrio";
FORMAT DATA_ANIV DDMMYY10.
SAL COMMAX12.2 ;
RUN;
ODS HTML CLOSE;
NOME
Data de
Aniversrio
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
1 SONTAS,MARCIO
Salrio
89
DATA=
MAXDEC=
NOPRINT
CLASS
VAR
BY
90
Ex.48:
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.49:
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
----------------------------------------------------------------------------
91
Ex.50:
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.51:
92
BY
93
Ex.52:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.DADOS ;
TABLES SEXO IDADE ;
RUN ;
The SAS System
Cumulative Cumulative
SEXO Frequency Percent
Frequency Percent
--------------------------------------------------------------------F
9
50.0
9
50.0
M
9
50.0
18
100.0
Cumulative Cumulative
IDADE Frequency Percent
Frequency Percent
---------------------------------------------------------------------18
2
11.1
2
11.1
19
1
5.6
3
16.7
20
1
5.6
4
22.2
21
2
11.1
6
33.3
22
2
11.1
8
44.4
25
2
11.1
10
55.6
26
1
5.6
11
61.1
28
1
5.6
12
66.7
29
1
5.6
13
72.2
32
1
5.6
14
77.8
33
1
5.6
15
83.3
35
1
5.6
16
88.9
36
1
5.6
17
94.4
38
1
5.6
18
100.0
94
Ex.53:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;
The FREQ Procedure
Table of sexo by empresa
sexo
empresa
Frequency|
Percent |
Row Pct |
Col Pct |ATLAS S.|MALTA LT|PARIS IN| Total
|A.
|DA
|STITUTO |
---------+--------+--------+--------+
F
|
58 |
101 |
112 |
271
| 13.36 | 23.27 | 25.81 | 62.44
| 21.40 | 37.27 | 41.33 |
| 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+
M
|
39 |
73 |
51 |
163
|
8.99 | 16.82 | 11.75 | 37.56
| 23.93 | 44.79 | 31.29 |
| 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+
Total
97
174
163
434
22.35
40.09
37.56
100.00
Frequency Missing = 116
95
Ex.54:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.DADOS ;
TABLES SEXO*IDADE / LIST ;
RUN ;
96
Ex.55:
TITLE;
OPTIONS NODATE PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / OUT=TESTE
MISSING
NOCUM
NOPERCENT;
RUN;
sexo
Frequency|
Row Pct |
Col Pct |
|ATLAS S.|MALTA LT|PARIS IN|
|
|A.
|DA
|STITUTO |
---------+--------+--------+--------+--------+
F
|
79 |
58 |
101 |
112 |
| 22.57 | 16.57 | 28.86 | 32.00 |
| 68.10 | 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+--------+
M
|
37 |
39 |
73 |
51 |
| 18.50 | 19.50 | 36.50 | 25.50 |
| 31.90 | 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+--------+
Total
116
97
174
163
Obs
sexo
1
2
3
4
5
6
7
8
F
F
F
F
M
M
M
M
empresa
ATLAS S.A.
MALTA LTDA
PARIS INSTITUTO
ATLAS S.A.
MALTA LTDA
PARIS INSTITUTO
Total
350
200
550
COUNT
PERCENT
79
58
101
112
37
39
73
51
14.3636
10.5455
18.3636
20.3636
6.7273
7.0909
13.2727
9.2727
97
VAR
BY
TABLE
opes
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).
98
Ex.56:
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.57:
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.58:
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|
-------------------------------------------------
99
Ex.59:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO EMPRESA ;
VAR ALTURA;
TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE;
RUN ;
SEXO F
-----------------------------------|
|
ALTURA
|
|
|------------|
|
|
Mean
|
|---------------------+------------|
|EMPRESA
|
|
|---------------------|
|
|ATLAS
|
1.71|
|---------------------+------------|
|MANTAS
|
1.67|
|---------------------+------------|
|All
|
1.69|
-----------------------------------SEXO M
-----------------------------------|
|
ALTURA
|
|
|------------|
|
|
Mean
|
|---------------------+------------|
|EMPRESA
|
|
|---------------------|
|
|ATLAS
|
1.82|
|---------------------+------------|
|MANTAS
|
1.79|
|---------------------+------------|
|All
|
1.80|
------------------------------------
100
Ex.60:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO ALTURA ;
TABLE ALTURA , SEXO ALL;
RUN ;
-------------------------------------------------------------|
|
SEXO
|
|
|
|-------------------------|
|
|
|
F
|
M
|
All
|
|
|------------+------------+------------|
|
|
N
|
N
|
N
|
|---------------------+------------+------------+------------|
|ALTURA
|
|
|
|
|---------------------|
|
|
|
|1.58
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.6
|
2.00|
.|
2.00|
|---------------------+------------+------------+------------|
|1.63
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.65
|
1.00|
1.00|
2.00|
|---------------------+------------+------------+------------|
|1.67
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.68
|
1.00|
2.00|
3.00|
|---------------------+------------+------------+------------|
|1.7
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.72
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.75
|
2.00|
3.00|
5.00|
|---------------------+------------+------------+------------|
|1.78
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.8
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.81
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.85
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.86
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.88
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.9
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|2.05
|
.|
1.00|
1.00|
--------------------------------------------------------------
101
Ex.61:
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
102
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 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 a mdia e somatrio de todas as variveis
numricas do arquivo SAS, CADASTRO ordenados por EMPRESA.
5 - Gere um relatrio com as tabelas de freqncia de SEXO, IDADE, ESTADO
CIVIL, FILHOS, EMPRESA e FUNCAO.
6 - Gere um relatrio com uma tabela de freqncia de SEXO versus IDADE.
7 - Gere um relatrio com duas tabelas de freqncia de ESTADO CIVIL versus
FILHOS e SEXO versus EMPRESA na mesma PROC.
103
8 - 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)
9 - 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)
10 - 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.
104
Comando que define um formato diferente para os valores de uma varivel numrica
ou caractere.
nome
opes
intervalo
LOW
HIGH
OTHER
<
descrio
Ex.62:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="MANHA"
"2"="TARDE"
OTHER="DADO ERRADO" ;
VALUE ALT LOW-<1.50="BAIXO"
1.50-<1.70="MEDIO"
1.70-HIGH="ALTO" ;
PROC PRINT DATA=ARQ.DADOS ;
FORMAT TURNO $TUR.
ALTURA ALT. ;
RUN ;
The SAS System
15:01 Tuesday, January 30, 1996
OBS
NOME
SEXO
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
M
F
F
M
F
M
M
M
F
F
F
F
M
M
F
M
M
F
IDADE
25
22
22
29
20
35
26
38
18
19
18
21
21
28
25
32
33
36
ALTURA
ALTO
ALTO
MEDIO
ALTO
MEDIO
ALTO
ALTO
ALTO
MEDIO
ALTO
MEDIO
MEDIO
MEDIO
ALTO
ALTO
ALTO
ALTO
MEDIO
PESO TURNO
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
106
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 uma sobreposio.
107
108
ARQ1
ARQ2
DATA ARQ3;
SET ARQ1 ARQ2;
RUN;
ARQ3
ARQ1
ARQ2
109
Ex.63:
LIBNAME IN "A:\" ;
DATA IN.ARQ1 ;
INFILE A:\ARQ1.TXT;
INPUT NOME $ 1-6 @8 SEXO $1. ;
RUN;
Arquivo: ARQ1.TXT
01
02
03
04
05
06
07
08
DATA IN.ARQ2 ;
INFILE C:\ARQ2.TXT;
INPUT NOME $ 1-7 IDADE 2. ;
RUN ;
Arquivo: ARQ2.TXT
M
DATA IN.CONCAT ;
SET IN.ARQ1 IN.ARQ2 ;
RUN;
PROC PRINT DATA=IN.CONCAT ;
RUN ;
SAS
OBS NOME
SEXO
IDADE
1
2
3
4
5
6
7
8
M
F
F
M
.
.
.
.
25
22
18
15
MARCIO
SANDRA
PAULA
CELSO
MARCIO
CELSO
PAULA
SANDRA
110
ARQ1
ARQ2
ARQ1
ARQ2
111
Ex.64:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;
PROC SORT DATA=IN.ARQ1 ; BY NOME ;
PROC SORT DATA=IN.ARQ2 ; BY NOME ;
DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;
PROC PRINT DATA=IN.ORD ; RUN ;
SAS
OBS
NOME
SEXO
IDADE
1
2
3
4
CELSO
MARCIO
PAULA
SANDRA
M
M
F
F
22
25
18
15
112
7 LABORATRIO
Utilizao da combinao de arquivos SAS
Utilizando os arquivos SAS gerados no 3 LABORATRIO item 6:
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.
113
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
114