Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Sas PDF
Apostila Sas PDF
SAS Programao I
Ricardo Almeida de Mendona Ksel
Verso: Abril/2008
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;
2 - CURIOSIDADES
4
3 - DEFINIO BSICA
- Recuperao de dados;
- Gerenciamento de arquivos;
- Anlise estatstica;
- Gerao de grficos;
- Gerao de relatrios;
- Gerao de aplicativos;
5
4 - COMERCIALIZAO
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
7
5 - CONCEITOS BSICOS
Acessar dados;
Administrar dados;
Analisar dados;
Apresentar dados;
8
6 - ARQUIVOS SAS
9
7 - ESTRUTURA DOS ARQUIVOS SAS
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
10
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS
- Possuir de 1 32 caracteres;
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
Ex.2:
DATA EXEMPLO1 ;
INFILE C:\TEMP\DADOS.DAT ;
INPUT NOME $ 1-8 SEXO $
IDADE $ 13-14 ALTURA 16-19 ;
RUN ;
12
10 - EXECUO
13
14
JANELA DE OPES DE CONFIGURAO
15
16
OPES DE CONFIGURAO DO EDITOR
17
18
CONFIGURAO DE TECLADO
19
10.2 - Modo No Interativo (Ambiente de COMANDOS)
20
11 - ESTRUTURA DATA STEP
11.1 - Introduo
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
- Uso: Livre;
[biblioteca].<nome do arquivo>
Ex.3:
LIBNAME IN "C:\ALUNO" ;
DATA IN.EXEMPLO ;
INFILE "A:\CADASTRO" ;
INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ;
Ex.4:
DATA ENDERECO ;
DATA ENT.CADASTRO ;
DATA ;
DATA _NULL_;
24
11.4 - Comando INFILE
INFILE "C:\DADOS\ARQ1.TXT" ;
INFILE "A:\CADASTRO.PRN" ;
DATA EXEMPLO ;
INFILE 'C:\TESTE\DADOS.TXT' MISSOVER;
. . .
. . .
. . .
25
11.5 - Comando SET
Ex.6:
DATA EXEMPLO ;
SET CADASTRO ;
.
.
.
26
11.6 - Comando INPUT
- INPUT COLUNADO
- INPUT FORMATADO
27
11.6.1 - INPUT COLUNADO
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
29
11.6.3 - Descrio de um Campo Data
"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
31
11.6.4 - Controles Especiais do Comando INPUT
Indicador de COLUNA ( @ )
Indicador de LINHA ( / )
Ex.10:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 1 1 1 1 B B B B C C C C
D D D D
E E E E F F
2 2 2 2 2 b b b b c c c c
d d d d
e e e e f f
DATA POSICAO ;
INFILE "C:\SAS\POS.DAT" ;
INPUT A $ 1-5 @10 B $ 4. @17 C $ 4. / D $ 1-4 / E $ 4. @8 F $ 2. ;
RUN;
PROC PRINT ; RUN ;
OBS A B C D E F
32
11.6.5 - Detalhes do Comando INPUT
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.
SEXO Caractere 1 31
IDADE Numrico 2 32
PESO Numrico 6 2 34
ALTURA Numrico 4 2 40
FILHOS Numrico 2 55
RG Caractere 15 57
CPF Caractere 11 72
EMPRESA Caractere 15 83
FUNCAO Caractere 12 98
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.
35
12.1.1 - Comando VAR
12.1.2 - Comando BY
36
12.1.3 - Comando TITLE
- Uso: Livre;
TITLE "<cabealho>" ;
TITLE1 "<cabealho>" ;
...
TITLE10 "<cabealho>" ;
- Uso: Livre;
FOOTNOTE "<rodap>" ;
FOOTNOTE1 "<rodap>" ;
...
FOOTNOTE10 "<rodap>" ;
37
12.2 - Procedimento PRINT
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
FONTE: DH
39
12.3 - Procedimento SORT
40
Ex.14:
NOME SALARIO
ANTUNES 1800
TERESA 1650
-------
FUNCAO 3450
NOME SALARIO
JULIO 850
NOME SALARIO
CLAUDIA 1200
MARCOS 1200
-------
FUNCAO 2400
====
6700
41
13 - ARQUIVO DE MENSAGENS - "SAS Log"
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 ;
42
Ex.16:
DATA EXEMPLO1 ;
INFILE 'C:\TEMP\ LEITURA.DAT';
INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ;
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;
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;
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 );
2 - Gere:
- um arquivo SAS permanente ordenado por EMPRESA;
- um relatrio com todos os dados, relacionados por EMPRESA;
45
14 - COMANDOS BSICOS DE PROGRAMAO SAS
- Comando Caractere utilizado para criar novas variveis e editar as j existentes em um Data Step.
<varivel> = <expresso> ;
- Constantes :
- Concatenao de caracteres : ||
( ) 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
Analise Contbil
47
14.2 - Comando RETAIN
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;
Analise Contbil
48
14.3 - Comando IF-THEN/ELSE
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;
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
VIVIANE 2.5 A
LIDIA 9.5 A
PAULO 4.5 A
CLAUDIO 6.8 A
LUIZ 5.5 A
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
NOME CLASSE
PAULA 100
FLAVIA 300
MARCOS 200
LUIS 300
51
14.4 - Comando WHERE;
- Comando WHERE no pode ser utilizado com variveis que esto sendo
criadas no DATA Step por comandos de atribuio, ou pelo comando
INPUT;
WHERE <expresso> ;
Ex.24:
DATA TESTE;
SET ARQ.CADASTRO;
WHERE SALARIO BETWEEN 1000 AND 3000;
RUN;
53
14.6 - Comando LENGTH
54
14.7 - Comando DO/END Iterativo
Ex.27: Iterativo
DO MES="JAN","FEV","MAR" ; ( 3 vezes )
DO I = 1 TO 120 BY 2 ; ( 60 vezes )
55
14.8 - Comando DO WHILE
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
DO UNTIL <(expresso)> ;
...
END;<== ( Validao no fim )
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
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
DROP No grava
KEEP Somente grava
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 SUBARQ2 ;
SET CLASSE (KEEP=NOME END CEP);
RUN;
59
14.12 - Comando 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
17 10 525 52.5
31 5 100 20.0
5 1 15 15.0
60
14.13 - Comando OUTPUT
OUTPUT ;
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
Ex.34:
62
3 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;
(1) solteiro
(2) casado
(3) separado.
SALARIO=SALARIO*1.1
5 - Monte um programa que crie trs novos arquivos SAS, temporrios, (SA,
LTDA e INSTITUTO) ;
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 ;
65
15 - FUNES DO SAS
15.1 - Introduo
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
<varivel>=UPCASE (argumento) ;
<varivel>=LOWCASE (argumento) ;
67
15.2.3 - Funo SUBSTR
Nmero:
3 5
Caractere:
3 5
68
15.2.4 - Funo COMPRESS
<varivel>=COMPRESS(arg1,[arg2]);
<varivel>=LENGTH(arg);
69
15.2.6 - Funo INDEX
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;
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
SAS
RG_NUM RG_SSP
584166 SSP/DF
234 SSP/SP
22397488 SSP/RG
71
15.3 - Funes de Truncamento
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
73
15.4 - Funes Estatsticas Descritivas
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
T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED
75
15.5 - Funes de Tratamento de Data e Hora
<varivel>=DAY(data);
<varivel>=MONTH(data);
<varivel>=YEAR(data);
<varivel>=TODAY();
<varivel>=TIME();
<varivel>=HOUR(tempo);
<varivel>=MINUTE(tempo);
<varivel>=SECOND(tempo);
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
PROC PRINT;RUN;
Relatrio de Idades
IDADE_ IDADE_
Obs DIA MES ANO ANIV ANO DIA
78
4 LABORATRIO
2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS,
temporrio, e as novas variveis novas:
SAL_MED Mdia dos salrios. Ser o resultado da mdia entre as variveis: SAL,
SAL_FAM e SAL_COM ;
OBS: Utilize as funes SUM e MEAN, para somar e tirar a mdias entre as variveis,
respectivamente.
79
16 - Comandos de Configurao
- Uso: Livre;
Algumas opes:
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;
PAGENO= Opo que especifica a numerao inicial das paginas de OUTPUT, para
cada execuo;
MEMSIZE= Opo que especifica a quantidade de memria que o sistema SAS poder
utilizar para qualquer processamento. No windows: livre ;
80
Ex.40:
Ex.41:
81
16.2 - Comando LABEL
S O N I A 5 1 . 3 5 0 . 5
Data de
Obs NOME Aniversrio Salrio
83
16.4 - Comando ODS
- Uso: Livre;
...
padres:
opo genrica:
84
Ex.44:
ODS HTML FILE="C:\temp\teste.html" STYLE=minimal;
85
17 - PROCEDIMENTOS ESTATSTICOS BSICOS
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:
Ex.48:
88
17.2 - Procedimento FREQ
89
Ex.49:
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 ;
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
91
Ex.51:
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;
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
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:
OPTIONS LS=130;
-----------------------------------------------------------
| | | | 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.
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.
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;
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;
99
18 - RECURSO DE FORMATAO ESPECIAL
PROC FORMAT ;
VALUE <nome> [( opes )]
<intervalo> = "<descrio>"
VALUE Comando que define um formato diferente para os valores de uma varivel numrica
ou caractere.
100
Ex.59:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="MANHA"
"2"="TARDE"
OTHER="DADO ERRADO" ;
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"
3 - Gere um relatrio com uma tabela de freqncia de IDADE versus ESTADO CIVIL, com os
dados formatado.
4 - Gere um relatrio com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os
dados de SALARIO formatados.
102
19 - COMBINAO DE ARQUIVOS SAS
19.1 - Concatenao
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;
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 )
ARQ1 ARQ2
ARQ3
ARQ1 ARQ2
105
Ex.61:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;
DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;
SAS
1 CELSO M 22
2 MARCIO M 25
3 PAULA F 18
4 SANDRA F 15
106
7 LABORATRIO
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.
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.
107
20 - BIBLIOGRAFIA
MANUAIS:
Curso de SAS/BSICO
Soft Consultoria
108