Académique Documents
Professionnel Documents
Culture Documents
SAS Programação I
Ricardo Almeida de Mendonça Küsel
Versão: 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 - Opções de Arquivos SAS pag.59
14.12 - Comando DELETE pag.60
14.13 - Comando OUTPUT pag.61
3º LABORATÓRIO pag.63
15 - FUNÇÕES DO SAS pag.66
15.1 - Introdução pag.66
15.2 - Funções de Tratamento de Caractere pag.67
15.2.1 - Função UPCASE pag.67
15.2.2 - Função LOWCASE pag.67
15.2.3 - Função SUBSTR pag.68
15.2.4 - Função COMPRESS pag.69
15.2.5 - Função LENGTH pag.69
15.2.6 - Função INDEX pag.70
15.3 - Funções de Truncamento pag.72
15.3.1 - Função INT pag.72
15.3.2 - Função ROUND pag.72
15.4 - Funções Estatísticas Descritivas pag.74
15.4.1 - Função SUM pag.74
15.4.2 - Função MEAN pag.74
15.5 - Funções de Tratamento de Data e Hora pag.76
15.5.1 - Função MDY pag.76
15.5.2 - Funções: DAY, MONTH, YEAR pag.76
15.5.3 - Função TODAY pag.77
15.5.4 - Função TIME pag.77
15.5.5 - Funções: HOUR, MINUTE, SECOND pag.77
4º LABORATÓRIO pag.79
16 - COMANDOS DE CONFIGURAÇÃO pag.80
16.2 - Comando LABEL pag.82
16.3 - Comando FORMAT pag.83
16.4 - Comando ODS pag.84
17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS pag.86
17.1 - Procedimento MEANS pag.86
17.2 - Procedimento FREQ pag.89
17.3 - Procedimento TABULATE pag.94
5º LABORATÓRIO pag.99
18 - RECURSO DE FORMATAÇÃO ESPECIAL pag.100
18.1 - Procedimento FORMAT pag.100
6º LABORATÓRIO pag.102
19 - COMBINAÇÃO DE ARQUIVOS SAS pag.103
19.1 - Concatenação pag.103
19.2 - Combinação Ordenada pág.105
7º LABORATÓRIO pag.107
20 - BIBLIOGRAFIA pag.108
3
1 - HISTÓRICO
Década de 60;
2 - CURIOSIDADES
4
3 - DEFINIÇÃO BÁSICA
- Recuperação de dados;
- Gerenciamento de arquivos;
- Análise estatística;
- Geração de gráficos;
- Geração de relatórios;
- Geração de aplicativos;
5
4 - COMERCIALIZAÇÃO
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 BÁSICOS
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 VARIÁVEIS
- 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 - SÍNTAXE 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 - EXECUÇÃO
13
14
JANELA DE OPÇÕES DE CONFIGURAÇÃO
15
16
OPÇÕES DE CONFIGURAÇÃO DO EDITOR
17
18
CONFIGURAÇÃO DE TECLADO
19
10.2 - Modo Não Interativo (Ambiente de COMANDOS)
20
11 - ESTRUTURA DATA STEP
11.1 - Introdução
Inicio do
DATA Step
Abrir
arquivo
para gravar
Abrir
arquivo
para leitura
Ler novo
registro
processa
registro
Salvar
registro no
arquivo para
gravaçao
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 - Descrição 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º LABORATÓRIO
Montar um programa SAS que leia um arquivo de dados externo (não SAS) e gere um
arquivo no formato SAS (Data Set), permanente.
SEXO Caractere 1 31
IDADE Numérico 2 32
PESO Numérico 6 2 34
ALTURA Numérico 4 2 40
FILHOS Numérico 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 - Introdução
- É a seção de um programa SAS aonde se analisa os dados de um arquivo
SAS, utilizando-se procedimentos específicos para cada tipo de análise.
35
12.1.1 - Comando VAR
12.1.2 - Comando BY
36
12.1.3 - Comando TITLE
- Uso: Livre;
TITLE "<cabeçalho>" ;
TITLE1 "<cabeçalho>" ;
...
TITLE10 "<cabeçalho>" ;
- Uso: Livre;
FOOTNOTE "<rodapé>" ;
FOOTNOTE1 "<rodapé>" ;
...
FOOTNOTE10 "<rodapé>" ;
37
12.2 - Procedimento PRINT
38
Ex.12:
TITLE "Relatório de Funcionários" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
Relatório de Funcionários
NOME FUNCAO
ANTUNES ANALISTA
TERESA ANALISTA
CLAUDIA PROG
MARCOS PROG
JULIO OPER
Ex.13:
TITLE "Relatório de Salários" ;
FOOTNOTE " FONTE: DH " ;
PROC PRINT DATA=EXEMPLO1 ;
VAR NOME FUNCAO SALARIO ;
SUM SALARIO ;
RUN ;
Relatório de Salários
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º LABORATÓRIO
Manipular os procedimentos de impressão e ordenação.
Utilizando o arquivo SAS gerado no laboratório anterior, monte programas SAS que:
1 - Gere um relatório:
- com as variáveis: NOME, EMPRESA, FUNCAO e SALARIO;
- deverá ter espacejamento DUPLO;
- não poderá aparecer a coluna com o número de registros ( OBS );
2 - Gere:
- um arquivo SAS permanente ordenado por EMPRESA;
- um relatório com todos os dados, relacionados por EMPRESA;
45
14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS
- Comando Caractere utilizado para criar novas variáveis e editar as já existentes em um Data Step.
<variável> = <expressão> ;
- Constantes :
- Concatenação de caracteres : ||
( ) Função ** * / + -
=================>
A=X+Y+Z ;
A=X+Y*Z ;
A=X/(Y/Z) ;
- Funções:
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 Contábil
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 Contábil
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 Lógico
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 não pode ser utilizado com variáveis que estão sendo
criadas no DATA Step por comandos de atribuição, ou pelo comando
INPUT;
WHERE <expressão> ;
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) ; ( Validação no início. 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 <(expressão)> ;
...
END;<== ( Validação no fim )
Ex.29:
DATA ;
X=0; N=0;
DO UNTIL (N GT 5) ;
X=X+N**2 ;
N=N+1 ;
END ; ( validação 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 - Opções de Arquivos SAS
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º LABORATÓRIO
1 - Monte um programa que crie um novo arquivo SAS, temporário, somente com
os dados das pessoas do sexo feminino e casadas. Gere um relatório com os dados
desse arquivo;
(1) solteiro
(2) casado
(3) separado.
SALARIO=SALARIO*1.1
5 - Monte um programa que crie três novos arquivos SAS, temporários, (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 diretório c:\curso\sas ;
65
15 - FUNÇÕES DO SAS
15.1 - Introdução
Tipos de funções:
- Funções de Tratamento de Caractere;
- Funções de Tratamento de Data e Hora;
- Funções Matemáticas;
- Funções de Estatísticas Descritivas;
- Funções Trigonométricas;
- Funções Hiperbólicas;
- Funções de Trucamento;
- Funções para geração de Números Randômicos;
- Funções de Probabilidade;
- Funções Financeiras;
- Funções de Macro;
66
15.2 - Funções de Tratamento de Caractere
<variável>=UPCASE (argumento) ;
<variável>=LOWCASE (argumento) ;
67
15.2.3 - Função SUBSTR
Número:
3 5
Caractere:
3 5
68
15.2.4 - Função COMPRESS
<variável>=COMPRESS(arg1,[arg2]);
<variável>=LENGTH(arg);
69
15.2.6 - Função INDEX
Ex.35:
DATA POSICAO;
REGIAO=”FRANÇA#ALEMANHA#ESPANHA#ITÁLIA”;
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 variáveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se
separar da variável RG o valor numérico do valor caractere que identifica a
Secretaria de Segurança Pública, armazenado-os em duas novas variáveis:
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 - Funções 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 - Funções Estatísticas 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 - Funções de Tratamento de Data e Hora
<variável>=DAY(data);
<variável>=MONTH(data);
<variável>=YEAR(data);
<variável>=TODAY();
<variável>=TIME();
<variável>=HOUR(tempo);
<variável>=MINUTE(tempo);
<variável>=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;
Relatório de Idades
IDADE_ IDADE_
Obs DIA MES ANO ANIV ANO DIA
78
4º LABORATÓRIO
2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS,
temporário, e as novas variáveis novas:
SAL_MED Média dos salários. Será o resultado da média entre as variáveis: SAL,
SAL_FAM e SAL_COM ;
OBS: Utilize as funções SUM e MEAN, para somar e tirar a médias entre as variáveis,
respectivamente.
79
16 - Comandos de Configuração
- Uso: Livre;
Algumas opções:
OBS=MAX Opção que especifica qual será o último registro a ser processado;
FIRSTOBS=1 Opção que especifica qual será o primeiro registro a ser processado;
PAGENO= Opção que especifica a numeração inicial das paginas de “OUTPUT”, para
cada execução;
MEMSIZE= Opção que especifica a quantidade de memória 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 Aniversário Salário
83
16.4 - Comando ODS
- Uso: Livre;
...
padrões:
opção genérica:
84
Ex.44:
ODS HTML FILE="C:\temp\teste.html" STYLE=minimal;
85
17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS
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: variáveis, funções estatísticas (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;
-----------------------------------------------------------
| | | | Média de |
| | N | % | Salário |
|------------------------------+------+------+------------|
|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º LABORATÓRIO
Utilização dos procedimentos estatísticos básicos.
1 - Gere um relatório com a média, o valor máximo, o valor mínimo e o desvio padrão
das variáveis PESO e ALTURA, classificados por SEXO e com apresentação dos
resultados com duas casas decimais.
6 - Gere um relatório com uma tabela que apresente a média das variáveis IDADE e
PESO, classificadas pela variável SEXO.
- A variável SEXO, deverá formar as linhas;
- As variáveis IDADE e PESO, deverão formar as colunas;
- Deverá ser utilizada a opção MEAN para formar as colunas;
7 - Gere um relatório com uma tabela que apresente a média e o somatório da variável
SALARIO, classificado por SEXO versus EMPRESA.
- A expressão SEXO versus EMPRESA deverá formar as linhas;
- A variável SALARIO deverá formar as colunas;
- Deverão ser utilizadas as opções MEAN e SUM para formar as colunas
- Tamanho da página de 55 linhas e 80 colunas;
99
18 - RECURSO DE FORMATAÇÃO ESPECIAL
PROC FORMAT ;
VALUE <nome> [( opções )]
<intervalo> = "<descrição>"
VALUE Comando que define um formato diferente para os valores de uma variável numérica
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º LABORATÓRIO
Criar, utilizar e manipular formatos (Procedimento FORMAT)
1 - Criar um programa que gere formatos especiais para os valores das variáveis: IDADE, PESO,
ALTURA, ESTADO CIVIL e SALARIO . Gere vários relatórios que utilize esses formatos.
Criar rótulos para variável IDADE:
15-25 = "15 a 25 anos"
26-50 = "26 a 50 anos"
51-HIGH = "Mais de 50 anos"
3 - Gere um relatório com uma tabela de freqüência de IDADE versus ESTADO CIVIL, com os
dados formatado.
4 - Gere um relatório com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os
dados de SALARIO formatados.
102
19 - COMBINAÇÃO DE ARQUIVOS SAS
19.1 - Concatenação
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 - Combinação 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º LABORATÓRIO
2 - Monte um programa que gere um arquivo SAS (INTER) que será a intercalação
ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma variável
comum CPF. Gere um relatório com os dados do arquivo INTER, para visualizar o
resultado.
3 - Monte um programa que gere um arquivo SAS (JUSTA) que será a justaposição
ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma variável
comum CIC. Gere um relatório com os dados do arquivo JUSTA para visualizar os
resultados.
107
20 - BIBLIOGRAFIA
MANUAIS:
Curso de SAS/BÁSICO
Soft Consultoria
108