Apostila Sas
Apostila Sas
Apostila de Treinamento:
SAS Programação I
- Introdução ao SAS: Data Step e Proc Step -
Revisão: 2012
CONTEÚDO
1 - HISTÓRICO pag.05
2 - CURIOSIDADES pag.05
3 - DEFINIÇÃO BÁSICA pag.06
4 - COMERCIALIZAÇÃO pag.07
4.1 - Módulos SAS pag.07
4.2 - Solução de Negócios pag.08
5 - CONCEITOS BÁSICOS pag.09
6 - ARQUIVOS SAS pag.10
7 - ESTRUTURA DOS ARQUIVOS SAS pag.11
8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS pag.12
9 - SINTAXE DOS COMANDOS pag.13
10 - EXECUÇÃO pag.14
10.1 - Modo Interativo (Ambiente WINDOWS) pag.14
10.2 - Modo Não Interativo (Ambiente de COMANDOS) pag.21
11 - ESTRUTURA DATA STEP pag.22
11.1 - Introdução pag.22
11.2 - Comando LIBNAME pag.24
11.3 - Comando DATA pag.25
11.4 - Comando INFILE pag.26
11.5 - Comando SET pag.27
11.6 - Comando INPUT pag.28
11.6.1 - INPUT COLUNADO pag.29
11.6.2 - INPUT FORMATADO pag.30
11.6.3 - Descrição de um Campo Data pag.31
11.6.4 - Controles Especiais do Comando INPUT pag.33
11.6.5 - Comando INFORMAT pag.34
11.6.6 - INPUT LISTADO pag.35
11.6.7 - Detalhes do Comando INPUT pag.37
1º LABORATÓRIO pag.38
12 – ESTRUTURA PROC STEP pag.39
12.1 - Introdução pag.39
12.1.1 - Comando VAR pag.40
12.1.2 - Comando BY pag.40
12.1.3 - Comando TITLE pag.41
12.1.4 - Comando FOOTNOTE pag.41
12.2 - Procedimento PRINT pag.42
12.3 - Procedimento SORT pag.44
13 - ARQUIVO DE MENSAGENS - "SAS Log" pag.46
2º LABORATÓRIO pag.49
14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS pag.50
14.1 - Comando de Atribuição (=) pag.50
14.2 - Comando RETAIN pag.52
14.3 - Comando IF-THEN/ELSE pag.53
14.4 - Comando WHERE pag.56
14.5 - Comando DO/END pag.57
14.6 - Comando LENGTH pag.58
14.7 - Comando DO/END Iterativo pag.59
14.8 - Comando DO/WHILE pag.60
14.9 - Comando DO/UNTIL pag.61
14.10 - Comandos DROP e KEEP pag.62
2
14.11 - Opções de Arquivos SAS pag.63
14.12 - Comando DELETE pag.64
14.13 - Comando OUTPUT pag.65
3º LABORATÓRIO pag.67
15 - FUNÇÕES DO SAS pag.70
15.1 - Introdução pag.70
15.2 - Funções de Tratamento de Caractere pag.71
15.2.1 - Função UPCASE pag.71
15.2.2 - Função LOWCASE pag.71
15.2.3 - Função SUBSTR pag.72
15.2.4 - Função COMPRESS pag.72
15.2.5 - Função LENGTH pag.73
15.2.6 - Função INDEX pag.73
15.3 - Funções de Truncamento pag.76
15.3.1 - Função INT pag.76
15.3.2 - Função ROUND pag.76
15.4 - Funções Estatísticas Descritivas pag.78
15.4.1 - Função SUM pag.78
15.4.2 - Função MEAN pag.78
15.5 - Funções de Tratamento de Data e Hora pag.80
15.5.1 - Função MDY pag.80
15.5.2 - Funções: DAY, MONTH, YEAR pag.80
15.5.3 - Função TODAY pag.81
15.5.4 - Função TIME pag.81
15.5.5 - Funções: HOUR, MINUTE, SECOND pag.81
4º LABORATÓRIO pag.83
16 - COMANDOS DE CONFIGURAÇÃO pag.84
16.1 – Comando OPTIONS pag.84
16.2 - Comando LABEL pag.86
16.3 - Comando FORMAT pag.87
16.4 - Comando ODS pag.88
17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS pag.90
17.1 - Procedimento MEANS pag.90
17.2 - Procedimento FREQ pag.93
17.3 - Procedimento TABULATE pag.98
5º LABORATÓRIO pag.103
18 - RECURSO DE FORMATAÇÃO ESPECIAL pag.104
18.1 - Procedimento FORMAT pag.104
6º LABORATÓRIO pag.106
19 - COMBINAÇÃO DE ARQUIVOS SAS pag.107
19.1 - Concatenação pag.107
19.2 - Combinação Ordenada pag.109
7º LABORATÓRIO pag.111
20 - BIBLIOGRAFIA pag.112
3
Tipografia utilizada na apostila
4
1 - HISTÓRICO
Década de 60;
2 - CURIOSIDADES
http://www.sas.com
http://v9doc.sas.com
- 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;
6
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
8
5 - CONCEITOS BÁSICOS
Acessar dados;
Administrar dados;
Analisar dados;
Apresentar dados;
9
6 - ARQUIVOS SAS
10
7 - ESTRUTURA DOS ARQUIVOS SAS
11
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;
12
9 - SÍNTAXE DOS COMANDOS
Ex.2:
DATA EXEMPLO1 ;
INFILE "C:\TEMP\DADOS.DAT" ;
INPUT NOME $ 1-8 SEXO $ 10
IDADE $ 13-14 ALTURA 16-19 ;
RUN;
13
10 - EXECUÇÃO
14
15
JANELA DE OPÇÕES DE CONFIGURAÇÃO
16
17
OPÇÕES DE CONFIGURAÇÃO DO EDITOR
18
19
CONFIGURAÇÃO DE TECLADO
20
10.2 - Modo Não Interativo (Ambiente de COMANDOS)
21
11 - ESTRUTURA DATA STEP
11.1 - Introdução
22
Fluxo de Execuçã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
23
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 ;
25
11.4 - Comando INFILE
DATA EXEMPLO ;
INFILE 'C:\TESTE\DADOS.TXT' MISSOVER;
. . .
. . .
. . .
26
11.5 - Comando SET
Ex.6:
DATA EXEMPLO ;
SET CADASTRO ;
. . .
. . .
. . .
27
11.6 - Comando INPUT
- INPUT COLUNADO
- INPUT FORMATADO
- INPUT LISTADO
28
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;
29
11.6.2 - INPUT FORMATADO
30
11.6.3 - Descrição de um Campo Data
"ddmmmyyyy"d "01JAN1960"d
31
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 ;
32
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 P A U L O 1 3 3 5
2 A N L I S T A
2 1 0 0 7 5 6 8 . 3 3
1 J U L I A 2 3 4 2
2 M E D I C A
2 1 0 8 5 6 3 7 . 5 0
DATA POSICAO ;
INFILE "C:\SAS\POS.DAT" ;
INPUT NOME $ 5-12 @17 MATRICULA $ 4. /
@3 FUNCAO $ 15. /
NIVEL $ 5-7 @12 SALARIO 8.2 ;
RUN;
PROC PRINT ; RUN ;
33
11.6.5 – Comando INFORMAT
Ex.11
1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334353637383940
J o a O 1 2 3 4 5 6 7 8 9 0 1 1 2 / 1 0 / 7 0 1 e 4 8 . 5 6 7 , 4 8
S a n D r a 8 9 0 5 6 7 8 4 3 2 5 0 1 – 0 4 – 6 5 2 e 5 9 . 7 8 6 , 5 5
C a r L o s 2 3 4 5 4 3 6 7 8 9 2 1 1 . 0 8 . 7 4 3 e 2 6 . 0 4 5 , 1 2
DATA FORMATO;
INFORMAT DATANIV DDMMYY8.
SALARIO COMMAX8.2
VALOR E3.;
INFILE "informat.txt";
INPUT NOME $ 1-8 CPF $ 11. DATANIV VALOR SALARIO ;
RUN;
PROC PRINT;RUN;
34
11.6.6 - INPUT LISTADO
35
Ex.12
A C % B a n a n a P r a t a % 1 0 / 0 8 / 2 0 1 0 % 9 . 4 5 9 , 0 0
S P % L a r a n j a S e l e t a % 2 5 / 0 5 / 2 0 1 0 % 2 . 0 5 7 , 0 0
M G % L i m ã o G a l e g o % 1 5 / 0 3 / 2 0 0 8 % 2 8 . 3 7 1 , 0 0
R J % M a m ã o P a p a y a % 2 3 / 0 5 / 2 0 0 8 % 2 . 1 9 8 , 0 0
1º Teste
DATA LAVOURA;
INFILE "LAVOURA1.PRN";
INPUT ESTADO $ PRODUTO $ D_COLHEITA VALOR;
RUN;
PROC PRINT;RUN;
1 AC%Banan Prata%10 . .
2 MG%Limão Galego%1 . .
2º Teste
DATA LAVOURA;
INFILE "LAVOURA1.PRN" DLM="%";
INPUT ESTADO $ PRODUTO $ D_COLHEITA $ VALOR $;
RUN;
PROC PRINT;RUN;
3º Teste
DATA LAVOURA;
INFILE "D:\kusel\Cursos\sas\Curso_SAS_Revisao_2012\LAVOURA1.PRN" DLM="%";
INFORMAT ESTADO $2.
PRODUTO $15.
D_COLHEITA DDMMYY10.
VALOR COMMAX12.2;
INPUT ESTADO $ PRODUTO $ D_COLHEITA VALOR ;
RUN;
PROC PRINT;RUN;
36
11.6.7 - Detalhes do Comando INPUT
37
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
38
12 - ESTRUTURA PROC Step
12.1 - Introdução
- É a seção de um programa SAS aonde se analisam os dados de um
arquivo SAS, utilizando-se procedimentos específicos para cada tipo de
análise.
39
12.1.1 - Comando VAR
12.1.2 - Comando BY
40
12.1.3 - Comando TITLE
- Uso: Livre;
- Pode ser codificado em qualquer parte do programa. Determina
de 1 até 10 títulos para o relatório a ser gerado pelo procedimento.
TITLE "<cabeçalho>" ;
TITLE1 "<cabeçalho>" ;
...
TITLE10 "<cabeçalho>" ;
- Uso: Livre;
41
12.2 - Procedimento PRINT
42
Ex.12:
TITLE "Relatório de Funcionários" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
Relatório de Funcionários
nome funcao
Raul Analista
Marcelo Analista
Paula Analista
Renato Analista
Carlos Programador
Leticia Programador
Silvio Programador
Celso Operador
Sandra Operador
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
43
12.3 - Procedimento SORT
44
Ex.14:
Relatório de Salários
nome salario
Raul 5688.35
Marcelo 4596.96
Paula 4978.05
Renato 3800.88
------- --------
funcao 19064.24
nome salario
Celso 1587
Sandra 1500
------ -------
funcao 3087
nome salario
Carlos 3544.45
Leticia 3845.30
Silvio 2998.38
------- --------
funcao 10388.13
========
32539.37
FONTE: DH
45
13 - ARQUIVO DE MENSAGENS - "SAS Log"
Ex.15:
DATA EXEMPLO1 ;
INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
NOTE: Copyright (c) 2002-2008 by SAS Institute Inc., Cary, NC, USA.
NOTE: SAS (r) Proprietary Software 9.2 (TS2M0)
Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS, Site 70005173.
NOTE: This session is executing on the XP_PRO platform.
1 DATA EXEMPLO1 ;
2 INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
3 INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ;
4 RUN;
NOTE: There were 9 observations read from the data set WORK.EXEMPLO1.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.03 seconds
cpu time 0.03 seconds
46
Ex.16:
DATA EXEMPLO1 ;
INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
22 DATA EXEMPLO1 ;
23 INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
24 INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ;
-
22
76
ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (.
25 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 (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
47
Ex.17:
DATA EXEMPLO1 ;
INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO SALARIO;
SUM SALARIO;
RUN ;
45 DATA EXEMPLO1 ;
46 INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
47 INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ;
48 RUN;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
48
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;
4 - Utilizando o arquivo SAS CADASTRO, gerado no laboratório anterior, crie um programa SAS que emita um
relatório com as variáveis: NOME, FUNCAO e SALARIO, em ordem ascendente por EMPRESA e descendente
por SALARIO.
6 - Utilizando o arquivo SAS CADASTRO, gere um relatório com apenas os funcionários que mais ganham de cada
empresa, e apenas um funcionário de cada função da empresa.
1 - Primeiro passo:
2 - Segundo passo:
- Execute um PROC SORT, mas gerando um NOVO ARQUIVO temporário, por EMPRESA e FUNCAO;
- Elimine as duplicatas de EMPRESA e FUNCAO, desse novo arquivo;
- Verifique os resultados com a PROC PRINT e as variáveis: NOME, EMPRESA, FUNCAO, SALARIO;
- Verifique se os resultados estão de acordo como o que foi solicitado no enunciado do exercício.
49
14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS
14.1 - Comando de Atribuição (=)
- Tipo: Comando de execução;
- 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 : ||
2º- Se os operadores possuírem a mesma prioridade, será executado o que vier primeiro, da
esquerda para direita:
( ) 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) ;
50
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
51
14.2 - Comando RETAIN
- Normalmente o SAS inicia todas as variáveis criadas no DATA Step, com o valor
“missing”, a cada iteração do DATA Step;
- O Comando RETAIN define uma variável com um valor inicial, e determina que
ela não seja reinicializada a cada iteração do DATA Step;
- Deve ser posicionado sempre antes do comando que irá utilizar a variável definida;
Ex.19:
LIBNAME ARQ "C:\SAS\TESTE" ;
DATA ARQ.LUCROS ;
RETAIN TOTAL 0;
INFILE "C:\DADOS\NUMEROS.TXT";
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
TOTAL=TOTAL+LUCRO ;
DOLLAR = LUCRO / 0.98 ;
RUN;
Analise Contábil
52
14.3 - Comando IF-THEN/ELSE
53
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;
VIVIANE 2.5 A
LIDIA 9.5 A
PAULO 6.8 A
CLAUDIO 6.8 A
LUIZ 5.5 A
O que está errado ???
DATA NOTA ;
INFILE "A:\NOTAS.TXT" ;
INPUT NOME $ 1-8 NOTA 9-11;
IF NOTA LT 3 THEN CONCEITO="E" ;
ELSE IF 3 <= NOTA < 5 THEN CONCEITO="D" ;
ELSE IF 5 LE NOTA LT 7 THEN CONCEITO="C" ;
ELSE IF 7 LE NOTA LT 9 THEN CONCEITO="B" ;
ELSE CONCEITO="A" ;
RUN;
The SAS System
VIVIANE 2.5 E
LIDIA 9.5 A
PAULO 6.8 C
CLAUDIO 6.8 C
LUIZ 5.5 C
54
Ex.22: Operador Lógico
LIBNAME TESTE "A:\" ;
DATA TESTE.CLASSE ;
INFILE "C:\ESCOLA\CLASSE.TXT";
INPUT NOME $ 1-7 SEXO $ 8 IDADE 10-11 @13 ALTURA 4.2 ;
IF (SEXO="1" AND ALTURA<1.55) OR (SEXO="1" AND IDADE<12)
THEN CLASSE="100" ;
ELSE IF (SEXO="2" AND ALTURA<1.55) OR (SEXO="2" AND IDADE<12)
THEN CLASSE="200" ;
ELSE CLASSE="300" ;
RUN;
Arquivo: CLASSE.TXT
01 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
55
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;
58
14.7 - Comando DO/END Iterativo
Ex.27: Iterativo
DO MES="JAN","FEV","MAR" ; (3 vezes) ;END;
59
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
60
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
61
14.10 - Comandos DROP e KEEP
Ex.30:
DATA CLASSE ;
INFILE "C:\ALUNOS\CADASTRO.DAT" ;
INPUT NOME $15. SEXO $1. ENDERECO $30. CEP $8. RG $10. CPF $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;
62
14.11 - Opções de Arquivos SAS
DATA SUBARQ2 ;
SET CLASSE (KEEP= NOME END CEP) ;
RUN;
63
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
64
14.13 - Comando OUTPUT
OUTPUT ;
65
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 0 1 0 0 0
M A R I A 1 0 1 . 1 5 8 0 0
C L A U D I A 1 0 1 . 2 0 7 5 0
C A R L O S 8 0 1 8 0 0
Ex.34:
66
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. Significado dos códigos do campo ESTADO CIVIL:
(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) ;
68
6 - Monte um programa com um único DATA Step que crie sete novos arquivos
SAS, permanentes, (PESSOAL , TRABALHO , FAMILIA, SOLTEIRO,
CHEFE, SUB e DESEMPREGADOS) no diretório c:\curso\sas ;
7 – Exercício opcional.
Com os dados do arquivo CADASTRO, monte um programa SAS que gere um arquivo temporário
com as pessoas entre 20 e 30 anos, sendo que, cada pessoa selecionada receberá um bonus de R$
3.500,00 ao salário anual, até completar 30 anos. Crie uma variável nova (BONUS) com o valor
total de bonus recebido por cada pessoa selecionada, e uma variável (NUM) com o número de vezes
que a pessoa recebeu o bonus;
OBS: Atenção à lógica do WHILE ou UNTIL, para que o programa não entre em
“loop”.
69
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 e Hiperbólicas;
- Funções de Truncamento;
- Funções para geração de Números Randômicos;
- Funções de Probabilidade;
- Funções Financeiras;
- Funções de Macro;
70
15.2 - Funções de Tratamento de Caractere
<variável>=UPCASE (argumento) ;
<variável>=LOWCASE (argumento) ;
71
15.2.3 - Função SUBSTR
<variável>=COMPRESS(arg1,[arg2]);
<variável>=LENGTH(arg);
73
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;
Obs LOCAL
1 17
2 13
3 25
4 0
74
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 (DROP=AUX);
INFILE "C:\ID\RG.DAT";
INPUT RG $ 18. ;
RG=UPCASE(RG);
AUX=INDEX(RG,"SSP");
IF AUX=0 THEN DELETE;
RG_NUM=SUBSTR(RG, 1, AUX-1) ;
RG_SSP=SUBSTR(RG, AUX);
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 s
8 6 7 9 4 7 E X É R C I T O
1 2 3 4 5 6 S S P / G O
RG_NUM RG_SSP
584166 SSP/DF
234 SSP/SP
22397488 SSP/RS
123456 SSP/GO
75
15.3 - Funções de Truncamento
76
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
77
15.4 - Funções Estatísticas Descritivas
78
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
1 0 1 2 2 5 1 5 1 8 1 2
T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED
79
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);
81
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
Relatório de Idades
IDADE_ IDADE_
Obs DIA MES ANO ANIV ANO DIA
82
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.
83
16 - COMANDOS DE CONFIGURAÇÃO
- Uso: Livre;
- Comando definição que altera e configura opções de performance, de impressão, de visualização
do ambiente SAS, de comunicação, etc
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=1 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;
84
Ex.40:
Ex.41:
85
16.2 - Comando LABEL
- Tipo: Comando de declaração;
P A U L O 5 9 . 0 9 9 . 5
M A R C I O 5 7 . 3 8 3 . 0
S O N I A 5 1 . 3 5 0 . 5
ALTURA PESO
EM EM
NOME POLEGADAS LIBRAS
86
16.3 - Comando FORMAT
Data de Salário
Obs Sobrenome,Nome Aniversário Bruto
87
16.4 - Comando ODS
- Uso: Livre;
...
padrões:
opção genérica:
88
Ex.44:
ODS HTML FILE="C:\temp\teste.html" STYLE=statdoc;
OPTIONS OBS=10;
PROC PRINT DATA=ARQ.CADASTRO SPLIT="*" ;
VAR NOME ANIVERSARIO SALARIO;
LABEL NOME="Sobrenome,Nome*"
ANIVERSARIO="Data de*Aniversário"
SALARIO="Salário*Bruto";
FORMAT ANIVERSARIO DDMMYY10.
SALARIO COMMAX12.2 ;
RUN;
89
17 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS
90
Ex.45:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC MEANS DATA=ARQ.MEDIA ;
RUN ;
The SAS System 08:49 Tuesday, August 10, 2010 1
Ex.46:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 MEDIAN MEAN MAX MIN ;
RUN ;
The SAS System
91
Ex.47:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN;
CLASS SEXO;
VAR SALARIO;
RUN ;
The SAS System
N
sexo Obs N Mean Maximum Minimum
----------------------------------------------------------------------
F 350 271 3302.66 20336.22 1500.73
Ex.48:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC SORT DATA=ARQ.MEDIA ; BY SEXO ;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
BY SEXO ;
VAR SALARIO ;
RUN ;
The SAS System
93
Ex.49:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.MEDIA NLEVELS COMPRESS;
TABLES SEXO IDADE ;
RUN ;
The SAS System
Variable Levels
--------------------
sexo 2
idade 31
Cumulative Cumulative
sexo Frequency Percent Frequency Percent
---------------------------------------------------------
F 350 63.64 350 63.64
M 200 36.36 550 100.00
Cumulative Cumulative
idade Frequency Percent Frequency Percent
----------------------------------------------------------
20 39 7.09 39 7.09
21 53 9.64 92 16.73
22 41 7.45 133 24.18
23 49 8.91 182 33.09
24 47 8.55 229 41.64
25 51 9.27 280 50.91
26 45 8.18 325 59.09
27 62 11.27 387 70.36
28 53 9.64 440 80.00
29 44 8.00 484 88.00
30 44 8.00 528 96.00
35 1 0.18 529 96.18
36 1 0.18 530 96.36
37 1 0.18 531 96.55
38 1 0.18 532 96.73
41 1 0.18 533 96.91
45 2 0.36 535 97.27
49 1 0.18 536 97.45
50 1 0.18 537 97.64
54 1 0.18 538 97.82
57 1 0.18 539 98.00
58 1 0.18 540 98.18
61 1 0.18 541 98.36
67 2 0.36 543 98.73
68 1 0.18 544 98.91
69 1 0.18 545 99.09
71 1 0.18 546 99.27
73 1 0.18 547 99.45
74 1 0.18 548 99.64
77 1 0.18 549 99.82
78 1 0.18 550 100.00 94
Ex.50:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;
The SAS System
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
95
Ex.51:
Cumulative Cumulative
sexo empresa Frequency Percent Frequency Percent
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
F ATLAS S.A. 58 13.36 58 13.36
F MALTA LTDA 101 23.27 159 36.64
F PARIS INSTITUTO 112 25.81 271 62.44
M ATLAS S.A. 39 8.99 310 71.43
M MALTA LTDA 73 16.82 383 88.25
M PARIS INSTITUTO 51 11.75 434 100.00
96
Ex.52:
TITLE;
OPTIONS NODATE NUMBER PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / MISSING
NOCUM
NOPERCENT
FORMAT=commax6.2;
RUN;
sexo empresa
Frequency|
Row Pct |
Col Pct | |ATLAS S.|MALTA LT|PARIS IN| Total
| |A. |DA |STITUTO |
---------+--------+--------+--------+--------+
F | 79,00 | 58,00 | 101,00 | 112,00 | 350,00
| 22.57 | 16.57 | 28.86 | 32.00 |
| 68.10 | 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+--------+
M | 37,00 | 39,00 | 73,00 | 51,00 | 200,00
| 18.50 | 19.50 | 36.50 | 25.50 |
| 31.90 | 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+--------+
Total 116,00 97,00 174,00 163,00 550,00
97
17.3 - Procedimento TABULATE
Ex.54:
Ex.55:
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO EMPRESA ;
VAR PESO;
TABLE SEXO, EMPRESA*PESO*MEAN ;
RUN ;
The SAS System
--------------------------------------------------------------
| | empresa |
| |--------------------------------------|
| | | | PARIS |
| | ATLAS S.A. | MALTA LTDA | INSTITUTO |
| |------------+------------+------------|
| | peso | peso | peso |
| |------------+------------+------------|
| | Mean | Mean | Mean |
|---------------------+------------+------------+------------|
|sexo | | | |
|---------------------| | | |
|F | 77.67| 77.44| 75.42|
|---------------------+------------+------------+------------|
|M | 83.87| 84.24| 83.77|
--------------------------------------------------------------
99
Ex.56:
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO EMPRESA ;
VAR ALTURA;
TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE BOX=_PAGE_;
RUN ;
The SAS System
------------------------------------
|sexo F | altura |
| |------------|
| | Mean |
|---------------------+------------|
|empresa | |
|---------------------| |
|ATLAS S.A. | 1.83|
|---------------------+------------|
|MALTA LTDA | 1.81|
|---------------------+------------|
|PARIS INSTITUTO | 1.78|
|---------------------+------------|
|All | 1.80|
------------------------------------
------------------------------------
|sexo M | altura |
| |------------|
| | Mean |
|---------------------+------------|
|empresa | |
|---------------------| |
|ATLAS S.A. | 1.89|
|---------------------+------------|
|MALTA LTDA | 1.91|
|---------------------+------------|
|PARIS INSTITUTO | 1.90|
|---------------------+------------|
|All | 1.90|
------------------------------------
100
Ex.57:
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS FILHOS E_CIVIL SEXO;
TABLE SEXO*E_CIVIL*FILHOS ALL, ALL;
RUN ;
The SAS System
--------------------------------------
| | All |
| |------------|
| | N |
|-----------------------+------------|
|sexo |e_civil|filhos | |
|-------+-------+-------| |
|F |1 |1 | 31.00|
| | |-------+------------|
| | |2 | 72.00|
| | |-------+------------|
| | |3 | 75.00|
| | |-------+------------|
| | |4 | 38.00|
| |-------+-------+------------|
| |2 |1 | 38.00|
| | |-------+------------|
| | |4 | 28.00|
| | |-------+------------|
| | |5 | 41.00|
| |-------+-------+------------|
| |3 |0 | 27.00|
|-------+-------+-------+------------|
|M |1 |1 | 22.00|
| | |-------+------------|
| | |2 | 40.00|
| | |-------+------------|
| | |3 | 48.00|
| | |-------+------------|
| | |4 | 11.00|
| |-------+-------+------------|
| |2 |1 | 24.00|
| | |-------+------------|
| | |4 | 25.00|
| | |-------+------------|
| | |5 | 13.00|
| |-------+-------+------------|
| |3 |0 | 17.00|
|-----------------------+------------|
|All | 550.00|
--------------------------------------
101
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|
-----------------------------------------------------------
102
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;
103
18 - RECURSO DE FORMATAÇÃO ESPECIAL
PROC FORMAT ;
VALUE <nome> [( opções )]
<intervalo> = "<descrição>"
104
Ex.59:
OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="Turno da MANHÃ"
"2"="Turno da TARDE"
OTHER="Turno NÃO EXISTE!" ;
105
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.
106
19 - COMBINAÇÃO DE ARQUIVOS SAS
19.1 - Concatenação
ARQ1 ARQ2
DATA ARQ3;
SET ARQ1 ARQ2;
RUN;
ARQ3
ARQ1
ARQ2
107
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
108
19.2 - Combinação Ordenada ( Match-Merging )
ARQ1 ARQ2
DATA ARQ3 ;
MERGE ARQ1 ARQ2 ;
BY <variável comum>;
RUN;
ARQ3
ARQ1 ARQ2
109
Ex.62:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;
DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;
1 CELSO M 22
2 MARCIO M 25
3 PAULA F 18
4 SANDRA F 15
110
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.
111
20 - BIBLIOGRAFIA
MANUAIS:
Curso de SAS/BÁSICO
Soft Consultoria
112