Académique Documents
Professionnel Documents
Culture Documents
UNICAMP/CENAPAD-SP
Versão: Março/2007
2
CONTEÚDO
1 - INTRODUÇÃO pag.04
1.1 - HISTÓRICO pag.04
1.2 - ATUALMENTE pag.04
1.3 - DEFINIÇÃO BÁSICA pag.05
1.4 - MÓDULOS DO SAS pag.06
1.5 - CONCEITOS BÁSICOS pag.07
1.6 - ARQUIVOS SAS pag.08
1.7 - ESTRUTURA DOS ARQUIVOS SAS pag.09
1.8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS pag.10
1.9 - SINTAXE DOS COMANDOS pag.11
1.10 - AMBIENTE WINDOWS pag.12
11 - BIBLIOGRAFIA pag.114
4
1 - INTRODUÇÃO
1.1 - HISTÓRICO
Década de 60;
1.2 - ATUALMENTE
- 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;
- Soluções de negócios;
Acessar dados;
Administrar dados;
Analisar dados;
Apresentar dados;
8
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
S 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
Ex.2:
DATA EXEMPLO1 ;
INFILE “C:\TEMP\DADOS.DAT”;
INPUT NOME $ 1-8 SEXO $
IDADE $ 13-14 ALTURA 16-19 ;
RUN;
CONFIGURAÇÃO DE TECLADO
2.1 - INTRODUÇÃO
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
21
Comando de Definição;
Ex.3:
DATA ENDERECO ;
DATA ARQ1 ARQ2 ARQ3 ;
DATA ENT.CADASTRO ;
DATA ;
DATA _NULL_;
Comando de Definição;
DATA EXEMPLO ;
INFILE 'C:\TESTE\DADOS.TXT' MISSOVER;
. . .
. . .
. . .
23
Comando de Execução;
Ex.5:
DATA EXEMPLO ;
SET CADASTRO ;
.
.
.
Comando de Execução;
Ex.6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
C A R L O S M 1 8 1 7 0 6 8 . 0
C A R L A F 2 6 1 7 8 7 2 . 0
S I L V I A F 2 1 1 6 5 6 0 . 5
DATA FICHA ;
INFILE “A:\CADASTRO.TXT”;
INPUT NOME $ SEXO $ IDADE ALTURA PESO ;
RUN;
26
C A R L O S M 1 8 1 7 0 6 8 . 0
C A R L A F 2 6 1 7 8 7 2 . 0
S I L V I A F 2 1 1 6 5 6 0 . 5
DATA FICHA ;
INFILE “A:\CADASTRO.TXT”;
INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ;
RUN;
27
“DDMMMYYYY”D “01JAN1960"d
29
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 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 27
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
R J 2 0 4 5 6 3 0 0 6 , 7 3 9 , 9 9 2 8 8 F 1 . 2 E 5
S P 1 1 5 0 0 0 0 0 9 , 4 6 4 , 2 6 5 6 C C 1 2 5 E 5
DATA EXEMPLO2 ;
INFILE “A:\NUMEROS.PRN”;
INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ;
RUN;
PROC PRINT ; RUN ;
SAS
OBS UF CEP POP VALOR1 VALOR2
Posicionadores de COLUNA ( @ , + )
Posicionadores de LINHA ( # , / )
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 $ @10 B $ 4. +3 C $ 4. / D $ 1-4 / E $ @8 F $ #2 D1 $ 4. ;
RUN;
PROC PRINT ; RUN ;
The SAS System
OBS A B C D E F D1
- Detalhes de leitura:
INPUT JAN 3. FEV 3. MAR 3. ABR 3. MAI 3. JUN 3. ;
INPUT (JAN FEV MAR ABR MAI JUN) (3.) ;
Comando de Definição;
O “;” indica fim de dados e deve ser posto, sozinho, em uma linha;
Ex.11:
DATA FICHA ;
INPUT NOME $ SEXO $ IDADE ALTURA PESO ;
CARDS;
Antônio M 32 1.78 78
Julia F 25 1.70 65
;
RUN;
DATA FICHA ;
INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ;
DATALINES;
Maria F 36 16857.8
Josefina F 42 15967.9
Tom M 56 18295.8
;
RUN;
33
3.1 - INTRODUÇÃO
3.1.2 - Comando BY
TITLE "<cabeçalho>" ;
TITLE1 "<cabeçalho>" ;
...
TITLE10 "<cabeçalho>" ;
FOOTNOTE "<rodapé>" ;
FOOTNOTE1 "<rodapé>" ;
...
FOOTNOTE10 "<rodapé>" ;
Ex.12:
TITLE "Relatório de Fucionarios" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
Relatório de Funcionarios
NOME FUNCAO
ANTUNES ANALISTA
TERESA ANALISTA
CLAUDIA PROG
MARCOS PROG
JULIO OPER
Ex.13:
Ex.14:
NOME SALARIO
ANTUNES 1800
TERESA 1650
-------
FUNCAO 3450
NOME SALARIO
JULIO 850
NOME SALARIO
CLAUDIA 1200
MARCOS 1200
-------
FUNCAO 2400
====
6700
40
4 - 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 ;
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';
20 RUN;
21
22 PROC PRINT DATA=EXEMPLO1 NOOBS
24 RUN ;
Ex.17:
42
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 ;
65 SUM SALARIO;
66 RUN ;
43
5 - COMANDOS BÁSICOS EM DATA STEP
[biblioteca].<nome do arquivo>
Ex.18:
LIBNAME IN "C:\ALUNO" ;
DATA IN.EXEMPLO ;
INFILE "A:\CADASTRO" ;
INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ;
NOME Caractere 30 1
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
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;
<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) ;
47
Ex.19:
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 Contabil
Comando de Definição;
Ex.20:
DATA LUCROS ;
INFILE “C:\DADOS\NUMEROS.TXT”;
RETAIN CONT 0 ANO 0;
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
CONT=CONT+1 ;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
DOLLAR = LUCRO / 0.98 ;
CARDS;
94 5650 1050
95 6280 1140
96 8450 2450
RUN;
PROC PRINT DATA=LUCROS NOOBS;
TITLE "Analise Contabil" ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;
Analise Contabil
Comando de Execução;
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;
51
Ex.23: 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 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
Comando de Execução;
Comando que possui como única ação, selecionar registros, se uma condição
for verdadeira;
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> ;
Comando de Execução;
DATA TRABALHO ;
INFILE "A:\EMPRESA.DAT" ;
INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;
IF DEP_NO="201" THEN DO ;
DEP="VENDAS" ;
SAL=COM+SALARIO ;
END ;
ELSE DO ;
DEP="ADMINISTRATIVO" ;
SAL=SALARIO ;
END ;
PROC PRINT NOOBS ;
RUN ;
Comando de Definição;
DATA TRABALHO ;
INFILE "A:\EMPRESA.DAT" ;
INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;
LENGTH DEP $ 14 ;
IF DEP_NO="201" THEN DO ;
DEP="VENDAS" ;
SAL=COM+SALARIO ;
END ;
ELSE DO ;
DEP="ADMINISTRATIVO" ;
SAL=SALARIO ;
END ;
PROC PRINT NOOBS ;
RUN ;
Comando de Execução;
Ex.28: Interativo
DO MES="JAN","FEV","MAR" ; ( 3 vezes )
DO I = 1 TO 120 BY 2 ; ( 60 vezes )
Comando de Execução;
Ex.29:
DATA ;
X=0; N=0;
DO WHILE (N LE 5) ; ( Avaliado no início. Executa 6 vezes )
X=X+N**2 ;
N=N+1 ;
END ;
RUN;
PROC PRINT;RUN;
SAS System
X N
55 6
57
5.10 - Comando DO UNTIL
Comando de Execução;
DO UNTIL <(expressão)> ;
...
END;<== ( Avaliação no fim )
Ex.30:
DATA ;
X=0; N=0;
DO UNTIL (N GT 5) ;
X=X+N**2 ;
N=N+1 ;
END ; ( Avaliado no fim. Executa 6 vezes )
RUN;
PROC PRINT;RUN;
SAS System
X N
55 6
58
5.11 - Comandos DROP e KEEP
Comandos de Definição;
Ex.31:
DATA CLASSE ;
INFILE "C:\ALUNOS\CADASTRO.DAT" ;
INPUT NOME $ 15. SEXO $ 1. END $ 30. CEP $ 8. RG $ 10. CIC $ 11.
MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ;
RUN;
DATA SUBARQ1 ;
SET CLASSE ;
DROP PESO ALT ESTCIV ;
RUN;
DATA SUBARQ2 ;
SET CLASSE ;
KEEP NOME END CEP ;
RUN;
59
5.12 - Opções de Arquivos SAS
Todo arquivo com estrutura SAS possui opções de configuração que são
especificados após cada arquivo, entre parênteses;
São opções do arquivo, que tem sua ação vinculada ao comando aonde o
arquivo está sendo especificado;
DATA CLASSE ;
INFILE "C:\ALUNOS\CADASTRO.DAT" ;
INPUT NOME $ 15. SEXO $ 1. END $ 30. CEP $ 8. RG $ 10. CIC $ 11.
MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ;
RUN;
DATA SUBARQ1 (DROP=PESO ALT ESTCIV) ;
SET CLASSE ;
RUN;
DATA SUBARQ2 ;
SET CLASSE (KEEP=NOME END CEP);
RUN;
60
5.13 - Comando DELETE
Opção de Execução;
Ex.33:
DATA PRODUTO ;
INFILE “D:\DADOS\PRODUTO.TXT”;
INPUT DEP $ 1-2 UNIDADE 4-5 CUSTO 7-9 ;
IF UNIDADE <= 0 OR CUSTO <= 0 THEN DELETE ;
CUSTOUNI=CUSTO/UNIDADE ;
RUN;
Arquivo: PRODUTO.TXT
01 02 03 04 05 06 07 08 09
1 7 1 0 5 2 5
4 2 5 0 - 6
3 1 5 1 0 0
2 4 0 3
5 1 1 5
PROC PRINT NOOBS ;
RUN ;
The SAS System
17 10 525 52.5
31 5 100 20.0
5 1 15 15.0
61
5.14 - Comando OUTPUT
Comando de Execução;
OUTPUT ;
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.35:
LIBNAME ARQ "C:\ALUNOS" ;
DATA ARQ.HOMENS ARQ.MULHERES ;
SET ARQ.CADASTRO ;
IF SEXO="F" THEN OUTPUT ARQ.MULHERES ;
ELSE OUTPUT ARQ.HOMENS ;
SALARIO=SALARIO*1.1
5 - Monte um programa que crie três novos arquivos SAS, temporários, (SA, LTDA
e INSTITUTO) ;
- Não altere a variável IDADE do arquivo. Crie uma nova variável auxiliar com
o valor da idade incrementada.
OBS: Atenção à lógica do WHILE ou UNTIL, para que o programa não entre em
“loop”.
66
6 - FUNÇÕES DO SAS
6.1 - INTRODUÇÃO
Toda função SAS é recursiva. Função pode ser executada dentro de outra
função, como parâmetro da função;
Tipos de funções:
- Funções de Tratamento de Caracter;
- 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;
67
6.2 - Funções de Tratamento de Caracter
<variável>=UPCASE (argumento) ;
<variável>=LOWCASE (argumento) ;
Número:
3 5
Caracter:
3 5
69
6.2.4 - Função COMPRESS
<variável>=COMPRESS(arg1,[arg2]);
<variável>=LENGTH(arg);
DATA NOVO ;
INFILE “C:\ID\RG.DAT”;
INPUT RG $ 18. ;
RG1=0 ; RG2=0 ;
AUX1=COMPRESS ( RG ) ;
AUX2=LENGTH ( AUX1 ) ;
DO I=1 TO AUX2 ;
AUX3=SUBSTR ( AUX1, I, 1 ) ;
IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ;
ELSE RG2=RG2+1 ;
END ;
RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ;
RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 );
RG_SSP = UPCASE ( RG_SSP ) ;
DROP AUX1 AUX2 AUX3 I RG1 RG2 ;
RUN;
Arquivo: RG.TXT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
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
6.2.6 - Função SCAN
Ex.38:
DATA PALAVRA;
REGIAO=”FRANÇA#ALEMANHA#ESPANHA#ITÁLIA”;
PAIS=SCAN(REGIAO,1,”#”); OUTPUT ;
PAIS=SCAN(REGIAO,2,”#”); OUTPUT ;
PAIS=SCAN(REGIAO,3,”#”); OUTPUT ;
PAIS=SCAN(REGIAO,4,”#”); OUTPUT ;
RUN;
PROC PRINT; VAR PAIS; RUN;
PAIS
FRANÇA
ALEMANHA
ESPANHA
ITÁLIA
72
6.2.7 - Função INDEX
Ex.39:
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
73
DATA NOVO ;
LENGTH AUX $ 6;
INFILE “C:\ID\RG.DAT”;
INPUT RG $ 18. ;
RG_NUM=SCAN( RG, 1,”S” ) ;
AUX=SCAN( RG, 2, “/” );
RG_SSP=”SSP/” || UPCASE(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 g
SAS
RG_NUM RG_SSP
584166 SSP/DF
234 SSP/SP
22397488 SSP/RG
74
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
75
6.3 - Funções de Truncamento
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
var1, var2, . . . varn Nome das variáveis numéricas que se deseja efetuar
um somatório.
var1, var2, . . . varn Nome das variáveis numéricas que se deseja efetuar
uma média.
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
<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);
%SYSFUNC(função, [formato]);
DATA ANIVERSARIO;
INPUT DIA MES ANO;
ANIV=MDY(MES,DIA,ANO);
IDADE_ANO=INT((TODAY()-ANIV)/365.25);
IDADE_DIA=”01jan2000"d - ANIV;
CARDS;
10 11 1976
25 04 2000
14 08 1934
08 01 1967
03 03 1955
;
RUN;
PROC PRINT;RUN;
Relatório de Idades
Em relação a data de hoje: 04/04/2006
IDADE_ IDADE_
Obs DIA MES ANO ANIV ANO DIA
OBS: Utilize as funções: SUBSTR, INT, ROUND, YEAR, MDY, INDEX ou SCAN e o
operador ||.
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_COM Salário comissionado, só para quem possui cargo de chefia. Será o resultado do
SALARIO*1.2 ;
SAL_MED Média dos salários. Será o resultdo 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.
84
7 - Comandos de Configuração
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;
Ex.46:
DATA ROTULO ;
INFILE “C:\CADASTRO\ROTULO.DAT”;
INPUT NOME $6. @8 ALT 4.1 @13 PES 4.1 ;
LABEL ALT = "ALTURA EM POLEGADAS"
PES = "PESO EM LIBRAS" ;
RUN;
Arquivo: ROTULO.DAT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
P A U L O 5 9 . 0 9 9 . 5
M A R C I O 5 7 . 3 8 3 . 0
S O N I A 5 1 . 3 5 0 . 5
Data de
Obs NOME Aniversário Salário
...
padrões:
opção genérica:
Data de
Obs NOME Salário
Aniversário
1 SONTAS,MARCIO 16/04/1985 3.240,05
2 SERPA,MARCO 06/02/1941 26.540,67
3 LONAS,PAULO 24/07/1930 55.211,27
4 CERTO,MARCO 03/07/1979 3.121,80
5 BENTES,MARCO 06/06/1967 9.452,31
6 MARUEL,PAULO 18/07/1977 3.288,80
7 LUILA,ROSANE 27/03/1950 25.628,72
8 APARECIDO,ELIANE 17/03/1943 .
9 SAUL,ROSANE 16/03/1957 24.949,40
10 PISCO,ROSANE 04/09/1962 9.710,13
90
8 - PROCEDIMENTOS ESTATÍSTICOS BÁSICOS
Ex.51:
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
----------------------------------------------------------------------------
Ex.52:
LIBNAME ARQ "G:\KUSEL\SAS";
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
CLASS TURNO ;
VAR IDADE ;
RUN ;
The SAS System
Analysis Variable : IDADE
Ex.54:
TITLE;
OPTIONS NODATE PAGENO=1;
PROC MEANS DATA=ARQ.CADASTRO NOPRINT;
CLASS EMPRESA;
VAR IDADE SAL;
OUTPUT OUT=TESTE
MIN=ID_MINIMO SAL_MINIMO
MEAN=ID_MEDIA SAL_MEDIA
MAX=ID_MAXIMA SAL_MAXIMA;
RUN;
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
95
Ex.56:
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
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
97
Ex.58:
TITLE;
OPTIONS NODATE PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / OUT=TESTE
MISSING
NOCUM
NOPERCENT;
RUN;
sexo empresa
Frequency|
Row Pct |
Col Pct | |ATLAS S.|MALTA LT|PARIS IN| Total
| |A. |DA |STITUTO |
---------+--------+--------+--------+--------+
F | 79 | 58 | 101 | 112 | 350
| 22.57 | 16.57 | 28.86 | 32.00 |
| 68.10 | 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+--------+
M | 37 | 39 | 73 | 51 | 200
| 18.50 | 19.50 | 36.50 | 25.50 |
| 31.90 | 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+--------+
Total 116 97 174 163 550
1 F 79 14.3636
2 F ATLAS S.A. 58 10.5455
3 F MALTA LTDA 101 18.3636
4 F PARIS INSTITUTO 112 20.3636
5 M 37 6.7273
6 M ATLAS S.A. 39 7.0909
7 M MALTA LTDA 73 13.2727
8 M PARIS INSTITUTO 51 9.2727
98
8.3 - Procedimento TABULATE
elementos: variáveis, funções estatísticas (SUM, MEAN, N, PCTN, PCTSUM, etc), ALL
(totalizador).
99
Ex.59: 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|
-------------------------------------------------
SEXO M
------------------------------------
| | ALTURA |
| |------------|
| | Mean |
|---------------------+------------|
|EMPRESA | |
|---------------------| |
|ATLAS | 1.82|
|---------------------+------------|
|MANTAS | 1.79|
|---------------------+------------|
|All | 1.80|
------------------------------------
101
Ex.63:
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|
-----------------------------------------------------------
103
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.
3 - Com o arquivo gerado no item anterior, crie um programa que emita um relatório
ordenado por EMPRESA.
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 caracter.
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:
"1" = "SOLTEIRO"
"2" = "CASADO"
"3" = "SEPARADO"
10.1 - CONCATENAÇÃO
ARQ1 ARQ2
DATA ARQ3 ;
SET ARQ1 ARQ2 ;
RUN ;
ARQ3
ARQ1
ARQ2
110
Ex.66:
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 ;
PROC PRINT DATA=IN.CONCAT ;
RUN ;
SAS
ARQ1 ARQ2
ARQ3
ARQ1 ARQ2
112
Ex.67:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;
PROC SORT DATA=IN.ARQ1 ; BY NOME ;
PROC SORT DATA=IN.ARQ2 ; BY NOME ;
DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
PROC PRINT DATA=IN.ORD ; RUN ;
SAS
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 o
resultado.
MANUAIS:
Curso de SAS/BÁSICO
Soft Consultoria