Escolar Documentos
Profissional Documentos
Cultura Documentos
Nvel Bsico
UNICAMP/CENAPAD-SP
2 CONTEDO
1 - INTRODUO
1.1 - HISTRICO 1.2 - ATUALMENTE 1.3 - DEFINIO BSICA 1.4 - MDULOS DO SAS 1.5 - CONCEITOS BSICOS 1.6 - ARQUIVOS SAS 1.7 - ESTRUTURA DOS ARQUIVOS SAS 1.8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS 1.9 - SINTAXE DOS COMANDOS 1.10 - AMBIENTE WINDOWS pag.04 pag.04 pag.04 pag.05 pag.06 pag.07 pag.08 pag.09 pag.10 pag.11 pag.12 pag.19 pag.19 Pag.21 pag.22 pag.23 pag.24 pag.25 pag.26 pag.27 pag.28 pag.30 pag.31 pag.32 pag.33 pag.33 pag.34 pag.34 pag.35 pag.35 pag.36 pag.38 pag.40 pag.43 pag.43 pag.44 pag.45 pag.46 pag.48 pag.49 pag.52 pag.53 pag.54 pag.55 pag.56 pag.57 pag.58 pag.59 pag.60
3
5.14 - COMANDO LENGTH 3 LABORATRIO pag.62 pag.63 pag.66 pag.66 pag.67 pag.67 pag.67 pag.68 pag.69 pag.69 pag.71 pag.72 pag.75 pag.75 pag.75 pag.77 pag.77 pag.77 pag.79 pag.79 pag.79 pag.80 pag.80 pag.80 pag.81 pag.81 pag.83 pag.84 pag.84 pag.86 pag.87 pag.88 pag.90 pag.90 pag.93 pag.98 pag.103 pag.105 pag.105 pag.107 pag.109 pag.109 pag.111 pag.113 pag.114
6 - FUNES DO SAS
6.1 - INTRODUO 6.2 - FUNES DE TRATAMENTO DE CARACTER 6.2.1 - FUNO UPCASE 6.2.2 - FUNO LOWCASE 6.2.3 - FUNO SUBSTR 6.2.4 - FUNO COMPRESS 6.2.5 - FUNO LENGTH 6.2.6 - FUNO SCAN 6.2.7 - FUNO INDEX 6.3 - FUNES DE TRUNCAMENTO 6.3.1 - FUNO INT 6.3.2 - FUNO ROUND 6.4 - FUNES ESTATSTICAS DESCRITIVAS 6.4.1 - FUNO SUM 6.4.2 - FUNO MEAN 6.5 - FUNES DE TRATAMENTO DE DATA E HORA 6.5.1 - FUNO MDY 6.5.2 - FUNES: DAY, MONTH, YEAR 6.5.3 - FUNO TODAY 6.5.4 - FUNO TIME 6.5.5 - FUNES: HOUR, MINUTE, SECOND 6.6 - FUNES MACRO 6.6.1 - FUNO %SYSFUNC 4 LABORATRIO
7 - COMANDOS DE CONFIGURAO
7.1 - COMANDO OPTIONS 7.2 - COMANDO LABEL 7.3 - COMANDO FORMAT 7.4 - COMANDO ODS
11 - BIBLIOGRAFIA
4 1 - INTRODUO 1.1 - HISTRICO Dcada de 60; North Caroline University; Censo Agro-pecurio Norte-americano; Conjunto de sub-rotinas (FORTRAN, IBM/370); SAS Institue Inc. (1975); 1.2 - ATUALMENTE 40.000 Instalaes em clientes, em 110 paises; 96 das 100 maiores empresas do mundo, utilizam SAS. (Fortune 500 List - 2005); SAS a maior empresa de software do mundo de capital privado; Idiomas: Chins, Francs, Alemo, Hebreu, Italiano, Japons, Russo, Espanhol, Polons, Hungaro, Sueco, Coreano, etc.
5 1.3 - DEFINIO BSICA um software integrado para anlise de dados que consiste de vrios produtos, que proporcionam: - Recuperao de dados; - Gerenciamento de arquivos; - Anlise estatstica; - Acesso a Banco de Dados (ORACLE, DB2, etc); - Gerao de grficos; - Gerao de relatrios; - Gerao de aplicativos; - Solues de negcios; um software de grande portabilidade, podendo operar em diversos ambientes computacionais: - Mainframes IBM ( CMS, MVS, OS, OS/390, Z/OS ) - DIGITAL ( VMS, OpenVMS ) - Micros PC ( DOS, Famlia Windows, OS/2 ) - UNIX ( Solaris, AIX, HP-UX, Irix, Linux )
Mdulo bsico, obrigatrio em toda instalao; Mdulo estatstico; Mdulo grfico ( Histogramas, plots, ... ); Mdulo de anlise e pesquisa operacinal (Programao linear, Anlise de caminho crtico); Mdulo para anlise de controle de qualidade; Mdulo de econometria (Sries temporais, Modelagem de Equaes Simultneas); Mdulo de programao interativa e amigvel; Mdulo para anlise e operao de matrizes; Mdulo para acesso aos diversos tipos de Banco de Dados; entre ambientes
SAS/QC SAS/ETS
DATA SET
OBSERVAO
JOB SAS
DATA STEP
Diviso lgica de um programa SAS, no qual se cria e altera um, ou vrios arquivos SAS ( Data Set's );
PROC STEP
Diviso lgica de um programa SAS, no qual se analisa e manipula os dados contido num arquivo SAS ( Data Set's );
OBS: A funcionalidade do Sistema SAS foi construda em torno de quatro idias bsicas no tratamento de dados: Acessar dados; Administrar dados; Analisar dados; Apresentar dados;
Todos os dados devero estar armazenados em arquivos com estrutura SAS (DATA Set's), para serem analisados pelos procedimentos do SAS ( PROC's ).
Em um nico programa SAS ( Job SAS ), vrios arquivos podero ser criados e analisados.
Os arquivos SAS, depois de criados, podem ser analisados pelos procedimentos SAS.
As colunas nas tabelas so chamadas de variveis: S Variveis correspondem aos campos de dados; S Cada varivel recebe um nome; S Existem dois tipos de variveis: caracter (at 32K caracteres - 32KBytes) numrica (Representao IEEE - 8Bytes) As linhas na tabela so chamadas de observaes (ou registros). No existem limites para o nmero de observaes. Um Arquivo SAS dividido em duas partes: Descritora Contm a descrio do arquivo: Tamanho do arquivo,
nmero de registros, nome, tipo, tamanho e formato de variveis, etc;
Dados
Todo nome de arquivo e varivel deve seguir as seguintes regras: S Possuir de 1 32 caracteres; S Comear com letra (A-Z); S Pode continuar com nmeros, letras ou travesses( _ ).
Ex.1:
DATA EXEMPLO1 ; INFILE C:\TEMP\CADASTRO.TXT; INPUT PRIMEIRO_NOME $ 1-8 SEXO $ 10 IDADE 13-14 ALTURA 16-19 ; RUN;
Todo comando SAS comea com uma palavra-chave, de identificao, e termina com ponto e virgula (;). S Os comandos podem comear e terminar em qualquer parte da linha; S Um comando pode se extender em diversas linhas; S Vrios comandos podem estar na mesma linha.
Ex.2:
DATA EXEMPLO1 ; INFILE C:\TEMP\DADOS.DATt; INPUT NOME $ 1-8 SEXO $ IDADE $ 13-14 ALTURA 16-19 ; RUN; PROC PRINT DATA=EXEMPLO1 ; RUN ; PROC FREQ DATA=EXEMPLO1 ; TABLES IDADE*ALTURA ; RUN ;
12 1.10 - AMBIENTE WINDOWS Para acessar o sistema SAS e necessrio que se esteja no ambiente WINDOWS do seu micro, abrir a janela SAS e execut-lo.
14
16
17
CONFIGURAO DE TECLADO
Tools Options Keys
18
19
20 Fluxo de Execuo
processa registro
NAO
Ultimo registro
21 2.2 - Comando DATA Comando de Definio; Comando que sempre inicia um DATA Step; Abre um novo arquivo DATA Set, vazio.
Ex.3:
DATA ENDERECO ; DATA ARQ1 ARQ2 ARQ3 ; DATA ENT.CADASTRO ; DATA ; DATA _NULL_;
22 2.3 - Comando INFILE Comando de Definio; Comando que identifica e abre um arquivo externo de dados, somente para leitura (no um arquivo no formato do SAS); Normalmente um arquivo de dados no formato texto (somente texto); Este comando deve ser posicionado aps o comando DATA e antes do comando INPUT. INFILE "<arquivo de dados>" [opes] ;
Opes: LRECL= Tamanho do registro; PAD Completa de brancos os registros; MISSOVER Previne o SAS de l um novo registro para completar os dados de uma varivel; DLM= Especifica um delimitador entre os campos.
Ex.4:
INFILE "C:\DADOS\ARQ1.TXT" DLM=,; INFILE "A:\CADASTRO.PRN" ; INFILE 'C:\SAS\CAD.DAT' LRECL=380 PAD ;
23 2.4 - Comando SET Comando de Execuo; Este comando abre um arquivo de dados DATA Set (formato SAS), somente para leitura, e que j exista; O comando deve ser posicionado, na maioria das vezes, no incio de um DATA Step, para permitir ao compilador ler a estrutura do arquivo especificado e armazen-la na memria;
Ex.5:
DATA EXEMPLO ; SET CADASTRO ; . . .
24 2.5 - Comando INPUT Comando de Execuo; O comando INPUT serve para descrever ao SAS como esto armazenados e organizados os dados em arquivos textos, que foram especificados pelo comando INFILE ou pelos dados digitados no programa, aps o comando CARDS;
Todo arquivo aberto pelo comando INFILE, sempre necessitar de um comando INPUT para ler o seu contedo;
O comando INPUT ir ler registro a registro (leitura sequncial) at encontrar "fim de arquivo (EOF)", e ir atribuir nomes (Variveis) para cada campo de um registro;
25 2.5.1 - INPUT LISTADO - L as variveis na ordem que aparecem na linha de dados, de acordo com um delimitador. Os dados no precisam estar alinhados e colunados; INPUT <varivel> [$]
varivel Nome da varivel que ser associada a uma coluna de dados. Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica
OBS:Por default o delimitador ser o caracter branco , e o tamanho de qualquer varivel ser de at 8 bytes.
Ex.6:
1 C C S 2 A A I 3 R R L 4 L L V 5 O A I A 6 S F F 7 8 M 2 9 10 1 6 2 1 11 8 1 12 13 1 7 1 14 7 8 6 15 0 7 5 16 6 2 6 17 8 . 0 18 . 0 . 5 19 0 20
DATA FICHA ; INFILE A:\CADASTRO.TXT; INPUT NOME $ SEXO $ IDADE ALTURA PESO ; RUN;
26 2.5.2 - INPUT COLUNADO - L as variveis especificando a sua posio na linha de dados (posio inicial e posio final). As variveis devero estar alinhadas e colunadas. INPUT <varivel> [$] <incio>-<fim> [.decimal] ;
varivel $ Nome da varivel, que ser associada a uma coluna de dados. Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica. Valor que indica a posio inicial da varivel na linha de dados. Valor que indica a posio final da varivel na linha de dados. Valor opcional, indica o nmero de posies decimais de uma varivel numrica.
Ex.7:
1 C C S 2 A A I 3 R R L 4 L L V 5 O A I A 6 S 7 8 9 M F F 10 11 1 2 2 12 8 6 1 13 14 1 1 1 15 7 7 6 16 0 8 5 17 6 7 6 18 8 2 0 19 . . . 20 0 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 2.5.3 - INPUT FORMATADO - L as variveis especificando o tamanho e opcionalmente, o formato do campo, na linha de dados. - o tipo de INPUT mais poderoso e complexo do SAS. INPUT <varivel> [$] <w.d> ou [fomatow.d] ;
varivel $ Nome da varivel, que ser associada a uma coluna de dados. Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica. Valor que indica o tamanho de um campo na linha de dados. Valor que indica o tamanho de um campo numrico com casas decimais. Campo opcional. Nome de um formato especial de leitura de dados: BINARYw.d L campo numrico no formato binrio e o converte para decimal; COMMAw.d L campo numrico com vrgulas e as retira; Ew.d L campo numrico com notao cientfica; HEXw. L campo numrico em hexadecimal; DDMMYYw. L campo no formato padro de datas dd/mm/yyyy.
w. w.d
formatow.d
28 2.5.4 - Descrio de um campo DATA Campos que representam datas necessitam que sejam identificados pelo SAS atravs de um formato de leitura e armazenados como numricos; O valor numrico armazenado representa o nmero de dias em relao a uma data base SAS.
01JAN1959 -365
01JAN1961 366
01/01/1959
01/01/1960
01/01/1961
um campo que obrigatoriamente deve ser lido com um formato de leitura para identificar a formatao da data. Formatos: DATE9. DDMMYY10. 01JAN1960 01/01/1960
29
Ex.8:
1 C C 2 A A 3 R R 4 L L 5 O A 6 S 7 8 9 M F 10 11 1 2 12 8 6 13 14 1 1 15 7 7 16 0 8 17 6 7 18 8 2 19 . . 20 0 0
DATA FICHA ; INFILE A:\CADASTRO.TXT; INPUT NOME $ 7. SEXO $ 1. IDADE 3. ALTURA 4.2 PESO 4. ; RUN;
Ex.9:
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
R J
0 1
4 5 5 0
6 0
3 0 0 0
0 0
6 , 9 ,
7 4
3 9 6 4
, ,
9 2
9 6
2 8 5 6
F 1
. 2
2 E 5 5 E 5
S P 1
C C 1
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 1 2 RJ SP 20456300 11500000 6739992 9464265 2191 1740 120000 12500000
30
2.5.5 - CONTROLES ESPECIAIS DO INPUT Posicionadores de COLUNA ( @ , + ) @n +n Move a leitura para a coluna n ; Move a leitura n colunas ;
1 D E 2 d e
1 D E 2 d e
1 D E 2 d e
1 D E 2 d e
F 2
F b b b b c c c c
DATA POSICAO ; INFILE "C:\SAS\POS.DAT" ; INPUT A $ @10 B $ 4. +3 C $ 4. / D $ 1-4 / E $ @8 F $ #2 D1 $ 4. ; RUN; PROC PRINT ; RUN ; The SAS System OBS 1 2 A 11111 22222 B BBBB bbbb C CCCC cccc D DDDD dddd E EEEE eeee F FF ff D1 DDDD dddd
31
- Dados caracteres sero sempre alinhados pela esquerda, e os dados numricos sempre alinhados pela direita; - Os tipos de INPUT , podem ser combinados num nico comado INPUT ; - Detalhes de leitura:
INPUT JAN 3. FEV 3. MAR 3. ABR 3. MAI 3. JUN 3. ; INPUT (JAN FEV MAR ABR MAI JUN) (3.) ; INPUT (MES1 MES2 MES3 MES4 MES5 MES6) (3.) ; INPUT (MES1-MES6) (3.) ;
32
Ex.11:
DATA FICHA ; INPUT NOME $ SEXO $ IDADE ALTURA PESO ; CARDS; Antnio 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
opes
comando
RUN
Comando para execuo do procedimento SAS. Necessrio no ltimo procedimento do programa SAS.
34
3.1.1 - Comando VAR Especifca as variveis do arquivo SAS que sero processadas pelo procedimento.
3.1.2 - Comando BY
35
36
Procedimento do SAS que imprime, na sada padro, os dados contidos nos arquivos SAS. A sada padro , normalmente, a janela OUTPUT.
PROC PRINT [opes] ; VAR <lista de variveis> ; BY <lista de variveis> ; SUM <lista de variveis> ;
opes DATA= DOUBLE NOOBS UNIFORM LABEL SPLIT= Nome do arquivo SAS; Espacejamento duplo; Suprime a coluna com o nmero de cada observao do arquivo; Formata todas as paginas uniformemente; Imprime os "label's" das variveis; Especifica um caracter do label para indicar a quebra da descrio;
VAR
Especifica uma lista de variveis que sero impressas; Especifica a quebra ou agrupamento do relatrio, por uma ou mais variveis; Especifica uma ou mais variveis numricas que sero totalizadas;
BY
SUM
37
Ex.12:
TITLE "Relatrio de Fucionarios" ; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; Relatrio de Funcionarios NOME ANTUNES TERESA CLAUDIA MARCOS JULIO FUNCAO ANALISTA ANALISTA PROG PROG OPER
Ex.13:
TITLE "Relatrio de Salrios" ; FOOTNOTE " FONTE: DH " ; PROC PRINT DATA=EXEMPLO1 ; VAR NOME FUNCAO SALARIO ; SUM SALARIO ; RUN ; Relatrio de Salrios OBS 1 2 3 4 5 NOME FUNCAO ANALISTA ANALISTA PROG PROG OPER SALARIO 1800 1650 1200 1200 850 ======= 6700
FONTE: DH
38
Procedimento do SAS que reordena os registros dos arquivos por uma ou mais variveis, em ordem ascendente ou descendente.
BY
OBS: A ordenao sempre feita na ordem ascendente. Para ordenar na ordem descendente necessario colocar o parmetro descending, antes da varivel a ser ordenada, no comando BY.
39
Ex.14:
PROC SORT DATA=EXEMPLO OUT=ORDENA ; BY FUNCAO ; RUN ; PROC PRINT DATA=ORDENA NOOBS ; BY FUNCAO ; VAR NOME SALARIO ; SUM SALARIO ; RUN ; The SAS System ----------------------------- FUNCAO=ANALISTA ----------------------------NOME ANTUNES TERESA FUNCAO SALARIO 1800 1650 ------3450
------------------------------- FUNCAO=PROG ------------------------------NOME SALARIO CLAUDIA MARCOS FUNCAO 1200 1200 ------2400 ==== 6700
40 4 - Arquivo de Mensagens - "SAS Log" Ao se executar um programa SAS, gerado um relatrio de mensagens com notificaes e erros da execuo do programa (janela LOG). Muito til, deve ser sempre analisado, principalmente quando no aparecer o relatrio com os resultados (janela OUTPUT), ou quando este relatrio aparecer com problemas. 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 2 3 DATA EXEMPLO1 ; INFILE "C:\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;
NOTE: The infile "C:\DADOS.TXT" is: FILENAME=C:\DADOS.TXT, RECFM=V,LRECL=132 NOTE: 5 records were read from the infile "C:\DADOS.TXT". The minimum record length was 16. The maximum record length was 23. NOTE: The data set WORK.EXEMPLO1 has 5 observations and 4 variables. NOTE: The DATA statement used 2.68 seconds. 4 5 6 PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;
41 Ex.16:
DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT';
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
42 Ex.17:
NOTE: The infile 'C:\TEMP\LEITURA.DAT' is: File Name=C:\TEMP\LEITURA.DAT, RECFM=V,LRECL=256 NOTE: 5 records were read from the infile 'C:\TEMP\LEITURA.DAT'. The minimum record length was 16. The maximum record length was 23. NOTE: SAS went to a new line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXEMPLO1 has 4 observations and 4 variables. NOTE: DATA statement used: real time 0.02 seconds cpu time 0.01 seconds
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
diretrio
OBS: O SAS define uma rea padro, temporria, de trabalho, de apelido work. Ex.18:
LIBNAME IN "C:\ALUNO" ; DATA IN.EXEMPLO ; INFILE "A:\CADASTRO" ; INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ; PROC PRINT DATA=IN.EXEMPLO NOOBS ; VAR NOME ENDERECO ; RUN ;
44 1 LABORATRIO
Montar um programa SAS que leia um arquivo de dados externo (no SAS) e gere um arquivo no formato SAS (Data Set), permanente. 1- Criar um arquivo SAS, permanente, de nome CADASTRO, no diretrio c:\curso\sas (Utilize os comandos LIBNAME e DATA ); 2 - Abra o arquivo de dados externo de nome CADASTRO.DAT no diretrio c:\curso\sas (Utilize o comando INFILE ). O Tamanho do registro de dados de 130 bytes; 3 - Leia os dados deste arquivo ( Utilize o comando INPUT, colunado ou formatado ). Sabendo-se que o contedo do arquivo est dividido em diversos campos na seguinte ordem:
Nome do Campo NOME SEXO IDADE PESO ALTURA ANIVERSARIO ESTADO CIVIL FILHOS RG CPF EMPRESA FUNCAO ADMISSAO SALARIO Tipo do Campo Caractere Caractere Numrico Numrico Numrico Numrico Caractere Numrico Caractere Caractere Caractere Caractere Numrico Numrico Tamanho do Campo 30 1 2 6 4 10 1 2 15 11 15 12 9 12 2 2 2 Decimais Posio Inicial 1 31 32 34 40 44 54 55 57 72 83 98 110 119 Campo formatado: Ex 18JAN2005 Campo formatado: Ex. 3.548,25 Campo formatado: Ex. 18/01/2005 Detalhe
4 - Releia parte do campo EMPRESA, na posio 89, defina a varivel TIPO DE EMPRESA, com 9 caracteres; 5 - Gere um relatrio com os resultados da leitura do arquivo. Leia com ateno as mensagens na janela LOG. Salve o seu programa!. OBS: Salve o seus programas! Faa-o sempre, no diretrio c:\curso\sas
45 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, CARGO e SALARIO; - dever ter espacejamento DUPLO; - no poder aparecer a coluna com o nmero de registros ( OBS ); ( Utilize o procedimento PRINT ) 2 - Gere: - um arquivo SAS permanente ordenado por EMPRESA; - um relatrio com todos os dados, relacionados por EMPRESA; (Utilize os procedimentos SORT e PRINT) 3 - Utilizando o arquivo ordenado do item anterior: - gere um relatrio por EMPRESA; - com os dados: NOME, CARGO e SALARIO; - faa um somatrio da varivel SALARIO; - coloque o ttulo "Relatrio de Salrios por Empresa"; - coloque o rodap "FONTE: Fundao Getlio Vargas"; ( Utilize o procedimento PRINT) 4 - Utilizando o arquivo SAS CADASTRO, gerado no laboratrio anterior, crie um programa SAS que emita um relatrio com as variveis: NOME, CARGO e SALARIO, em ordem ascendente por EMPRESA e descendente por SALARIO. (Utilize o procedimento SORT e PRINT) 5 - Utilizando o arquivo SAS CADASTRO, gere um relatrio que: - esteja ordenado por EMPRESA; - com as variveis: NOME, EMPRESA e SALARIO; - tenha espacejamento DUPLO; - sem ttulo algum; - com o somatrio da varivel SALARIO;
- Operaes aritmticas simples: + - * / ** x2=x ; Move valor; soma=x+y ; Adio; dif=x-y ; Subtrao; dobro=x*2 ; Multiplicao; met=x/2 ; Diviso; cubo=x**3 ; Exponenciao; y=-x ; Muda sinal; - Constantes : N=0 ; Constante numrica; - Concatenao de caracteres : SEXO="F" ; Constante caracter;
||
A=PAULO || ANTUNES; ==> A=PAULOANTUNES A=PAULO || || ANTUNES; ==> A=PAULO ANTUNES - Expresses complexas com prioridade de avaliao: ( ) Funo ** * / + =================, A=X+Y+Z ; A=X+Y*Z ; A=X/(Y/Z) ; - Funes: S=SQRT(X) ; A=INT(X) ; Z=ABS(SQRT(X)-2) ;
47
Ex.19:
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 9 9 9 02 4 5 6 03 04 5 6 8 05 6 2 4 06 5 8 5 07 0 0 0 08 09 1 1 2 10 0 1 4 11 5 4 5 12 0 0 0
PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ; TITLE "Analise Contabil" ; VAR ANO RECEITA DESPESAS LUCRO DOLLAR ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ;
Analise Contabil ANO 1994 1995 1996 RECEITA 5650 6280 8450 ===== 20380 DESPESAS 1050 1140 2450 ==== 4640 LUCRO 4600 5140 6000 ===== 15740 DOLLAR 4693.8775 5244.8979 6122.4489 ========= 16061.2240
49 5.4 - Comando IF-THEN/ELSE Comando de Execuo; Comando que condiciona a execuo de um outro comando SAS, de acordo com alguma expresso que determina uma condio; Se a expresso, que determina a condio, for verdadeira, ser executado o comando que vier aps o THEN. Se a condiao for falsa, ser executado o comando que vier aps o ELSE. Somente um comando aps o THEN e do ELSE
IF
<expresso>
expresso Combinao de variveis com operadores de comparao e/ou operadores lgicos que determinam uma condio. comando Comando do SAS que ser executado de acordo com o resultado da condio. Operadores de Comparao LT GT EQ LE GE NE NL NG IN < > = <= => ~= menor que maior que igual a menor ou igual a maior ou igual a no igual (diferente) no menor no maior esta no conjunto Operadores Lgicos OR | ou, um ou outro AND & e, ambos NOT ~ no, negao
50 Ex.21: 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;
9.5 4.5
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;
PROC PRINT NOOBS ; VAR NOME CLASSE ; RUN ; The SAS System NOME PAULA FLAVIA MARCOS LUIS CLASSE 100 300 200 300
Ex.25:
DATA TESTE; SET ARQ.CADASTRO; WHERE SALARIO BETWEEN 1000 AND 3000; RUN;
53 5.6 - Comandos DO/END Comando de Execuo; Comando que define a execuo de um bloco de comandos do SAS; Todos os comandos existentes entre o comando DO e o comando END, devero ser executados primeiro; Comandos DO e END podem ser usados para executar um grupo de comandos quando se encontra uma condio. Normalmente, para ampliar o comando IF-THEN/ELSE. IF <expresso> THEN DO; <comandos> ; END ; Ex.26:
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="ADMIN" ; SAL=SALARIO ; END ; PROC PRINT NOOBS ; RUN ; The SAS System NOME CARLOS ELIANE ALVARO FATIMA201 DEP_NO 201 101 101 COM 1500 . . 500 SALARIO 1500 1800 3800 1500 DEP VENDAS ADMIN ADMIN VENDAS SAL 3000 1800 3800 2000
54 5.7 - Comando DO/END Interativo Comando de Execuo; Comando utilizado para repetir um grupo de comandos n vezes.
Ex.27: Interativo
DO MES="JAN","FEV","MAR" ; DO I = 1 TO 120 ; ( 120 vezes ) DO I = 1 TO 120 BY 2 ; ( 60 vezes ) DO I = 120 TO 1 BY -1 ; ( 120 vezes ) DO I = 1 TO 10 WHILE (X < Y) ; ( 10 vezes ou enquanto X < Y ) DO I = 2 TO 20 BY 2 UNTIL ((X/3)>Y) ; ( 10 vezes ou at (X/3)>Y ) DO I = 10 TO 0 BY -1 WHILE (MES="JAN") ; ( 11 vezes ou enquanto o MES=JAN ) ( 3 vezes )
55 5.8 - Comando DO WHILE Comando de Execuo; Comando que repete um grupo de comandos enquanto uma expresso for verdadeira; A expresso avaliada no incio do loop; Se a expresso for falsa, os comandos dentro do loop nunca sero executados. DO WHILE <(expresso)> ; ( Avaliao no incio ) ... END;
expresso
Combinao de variveis que determina uma condio para a execuo do "loop", entre parnteses.
Ex.28:
DATA ; X=0; N=0; DO WHILE (N LE 5) ; ( Avaliado no incio. Executa 6 vezes ) X=X+N**2 ; N=N+1 ; END ; RUN; PROC PRINT;RUN; SAS System X 55 N 6
56 5.9 - Comando DO UNTIL Comando de Execuo; Comando que repete um grupo de comandos at a expresso ser verdadeira; A expresso avaliada no fim do loop; Se a expresso for falsa, os comandos dentro do loop sero executados, pelo menos, uma vez.
Ex.29:
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 55 N 6
57 5.10 - Comandos DROP e KEEP Comandos de Definio; O comando DROP elimina variveis de um arquivo SAS; O comando KEEP mantm variveis em um arquivo SAS; Pode ser posicionado em qualquer lugar de um Data Step; Esses dois comandos so exclusivos, ou se usa o comando DROP, ou se usa o comando KEEP, na lgica de um progama SAS.
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;
Ex.31:
DATA CLASSE ; INFILE "C:\ALUNOS\CADASTRO.DAT" ; INPUT NOME $ 15. SEXO $ 1. END $ 30. CEP $ 8. RG $ 10. CIC $ 11. MAT $ 8. INST $ 10. PESO 3. ALT 3. ESTCIV $ 1. ; RUN; DATA SUBARQ1 (DROP=PESO ALT ESTCIV) ; SET CLASSE ; RUN; DATA SUBARQ2 ; SET CLASSE (KEEP=NOME END CEP); RUN;
Arquivo: PRODUTO.TXT
01 1 4 3 2 5 02 7 2 1 4 03 04 1 5 5 0 1 1 05 0 0 06 07 5 1 08 2 6 0 0 3 5 09 5
PROC PRINT NOOBS ; RUN ; The SAS System DEP 17 31 5 UNIDADE 10 5 1 CUSTO 525 100 15 CUSTOUNI 52.5 20.0 15.0
60 5.13 - Comando OUTPUT Comando de Execuo; O comando OUTPUT funciona de duas formas: - Determina ao SAS que o registro que est sendo processado deve ser gravado no arquivo imediatamente, e no, ao final do Data Step (OUTPUT implcito). - Determina para qual arquivo SAS deve ser gravado o registro que est sendo processado. Normalmente utilizado junto com o comando IF-THEN/ELSE de acordo com uma condio; ATENO! Ao se codificar um comando OUTPUT no programa, o SAS desliga o OUTPUT implcito ao final do DATA Step. A ao de salvar o dado fica por conta do programador.
expresso
Combinao de variveis e valores que determinam uma condio a ser testada. Nome de um arquivo SAS, que j tenha sido especificado e criado pelo comando DATA.
arquivo
61 Ex.33:
LIBNAME K1 "A:\" ; DATA K1.VARIACAO ; INFILE A:\SAIDA.TXT; INPUT NOME $ 1-7 NIVEL $ 8-9 VAL 10-13 SALARIO 14-18; IF NIVEL="10" THEN DO I=1 TO 2 ; SAL=SALARIO*VAL ; OUTPUT ; END ; DROP I VAL; RUN; Arquivo: SAIDA.TXT
01 R P M 02 O A A 03 S U R 04 A L I 05 N O A 06 A 07 08 5 1 1 0 0 1 09 10 11 0 1 . . 1 1 5 12 13 14 15 1 1 16 5 0 8 17 0 0 0 18 0 0
PROC PRINT ; RUN ; The SAS System OBS 1 2 3 4 NOME PAULO PAULO MARIA 10 MARIA NIVEL 10 10 800 10 800 SALARIO 1000 1000 920 1058 SAL 1100 1210
Ex.34:
LIBNAME ARQ "C:\ALUNOS" ; DATA ARQ.HOMENS ARQ.MULHERES ; SET ARQ.CADASTRO ; IF SEXO="F" THEN OUTPUT ARQ.MULHERES ; ELSE OUTPUT ARQ.HOMENS ; PROC PRINT DATA=ARQ.MULHERES ; VAR NOME ; RUN ; PROC PRINT DATA=ARQ.HOMENS ; VAR NOME ; RUN ;
62 5.14 - Comando LENGTH Comando de Definio; Comando que define uma varivel, o tipo e o tamanho em bytes. Deve ser posicionado sempre no incio do Data Step, antes da utilizao da varivel.
LENGTH varivel [$] tamanho varivel [$] tamanho ... varivel [$] tamanho ;
varivel $ Nome da varivel que deseja definir; Caracter opcional que indica que a varivel s ir conter dados alfanumricos. Sem o $, significa que a varivel ser numrica; Tamanho em bytes da varivel.
tamanho
Ex.35:
64
OBS: Utilize o comando de atribuio (=) para criar e alterar as variveis. Utilize o comando IF-THEN/ELSE, interagindo com o comando DO/END, para se distinguir se possui ou no filhos e permitir a execuo de mais de um comando. Preste ateno aos resultados, verifique se est tudo correto. 4 - Monte um programa que crie um novo arquivo SAS, temporrio; - Selecione as pessoas que ganham menos de R$ 1.000,00; - Aumente o valor do salrio dessas pessoas em 10% at 12 vezes (relativos a 12 meses), ou at o salrio atingir um valor superior a R$ 3.000,00. Utilize a equao: SALARIO=SALARIO*1.1 - Salve os valores incrementados,um a um; - O arquivo s deve conter as variveis: NOME, EMPRESA, CARGO e SALARIO ; - Gere um relatrio com os dados deste arquivo; OBS: Utilize o comando IF-THEN/ELSE para selecionar as pessoas. Utilize o comando DO/END Interativo para aumentar o salrio.. Utilize o comando KEEP ou DROP para determinar quais as variveis devero ser arquivadas. 5 - Monte um programa que crie dois novos arquivos SAS, temporrios, (ATLAS e MANTAS) ; - Selecione os dados, de maneira que, em um arquivo s possua os dados das pessoas da EMPRESA "ATLAS", e em outro arquivo, da EMPRESA "MANTAS". - Elimine dos dois arquivos as pessoas que ocupam CARGO de "DIRETOR" e "GERENTE"; - Gere os relatrios desses dois arquivos; OBS: Utilize o comando DATA, para criar os arquivos. Utilize o comando IF/THEN/ELSE, para selecionar e eliminar os dados. Utilize o comando OUTPUT para direcionar a gravao dos registros.
65
6 - Monte um programa com um nico DATA Step que crie seis novos arquivos SAS, permanentes, (PESSOAL , TRABALHO , FAMILIA, SOLTEIRO, CHEFE e SUB) no diretrio c:\curso\sas ; - Cada arquivo dever conter os seguintes dados: PESSOAL Variveis: NOME, SEXO, IDADE, PESO, ALTURA, ESTADO CIVIL, FILHOS, RG e CIC Variveis: NOME, RG, CIC, EMPRESA, CARGO e SALARIO Pessoas que possuam filhos; Pessoas solteiras; Pessoas que ocupam cargo de chefia (GERENTE e DIRETOR); Pessoas que ocupam que no ocupam cargos de chefia;
TRABALHO
SUB
- Gere relatrios para ver o contedo de cada arquivo; 7 - Com os dados do arquivo CADASTRO, monte um programa SAS que gere um arquivo temporrio com as pessoas entre 20 e 30 anos, sendo que, cada pessoa selecionada receber um bonus de R$ 3.500,00 ao salrio anual, at completar 30 anos. Crie uma varivel nova (BONUS) com o valor total de bonus recebido por cada pessoa selecionada, e uma varivel (NUM) com o nmero de vezes que a pessoa recebeu o bonus; - Utilize o comando WHERE com um operador especial para selecionar os dados. - Utilize o comando DO WHILE ou UNTIL para processar a varivel com o valor total de bonus recebido; - No altere a varivel IDADE do arquivo. Crie novas variveis auxiliares: IDADE_INICIAL que ser igual a IDADE e IDADE_FINAL que ser a IDADE incrementada - Gere um relatrio com as variveis: NOME, IDADE_INICIAL, IDADE_FINAL, SALARIO, BONUS , NUM OBS: Ateno lgica do WHILE ou UNTIL, para que o programa no entre em loop.
66 6 - FUNES DO SAS
6.1 - INTRODUO Toda funo representa a execuo de uma determinada rotina que ir retornar um determinado valor. Toda funo SAS recursiva. Funo pode ser executada dentro de outra funo, como parmetro da funo; As funes no SAS, normalmente, fazem parte de um comando de atribuio e sempre so utilizadas em um DATA Step. <varivel> = <funo>(OF argumento, argumento, . . . ) ;
varivel Nome at no mximo 32 caracteres, aonde ser armazenado o valor retornado da execuo da funo. Palavra-chave que identifica a funo a ser processada. Parmetros de entrada para processamento da funo. Parmetro opcional que indica o processamento num intervalo de argumentos. Somente para as funes estatsticas.
funo argumento OF
Tipos de funes: - Funes de Tratamento de Caracter; - 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;
67 6.2 - Funes de Tratamento de Caracter 6.2.1 - Funo UPCASE Funo que converte o contedo de uma varivel ou expresso para caracteres maisculos. <varivel>=UPCASE (argumento) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.
argumento Varivel ou expresso caracter, cujo contedo ser convertido para letras maisculas.
6.2.2 - Funo LOWCASE Funo que converte o contedo de uma varivel ou expresso para caracteres minsculos. <varivel>=LOWCASE (argumento) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.
argumento Varivel ou expresso caracter, cujo contedo ser convertido para letras minsculas.
68 6.2.3 - Funo SUBSTR Funo que efetua a manipulao do contedo de uma variavel caracter. <varivel>=SUBSTR (arg1, arg2, [arg3]) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Primeiro argumento, especifca a varivel ou expresso caracter cujo contedo ser manipulado. Segundo argumento, especifca a posio inicial do contedo da varivel, que sera manipulado. Terceiro argumento, opcional, determina o nmero de caracteres do contedo da varivel que se deseja manipular. Se no for especificado, a funo pegar todos os caracteres, do valor do segundo argumento at o final.
arg1
arg2
arg3
OBS: possvel manipular dados numricos. Estes sero automticamente convertidos para caracter, mas ateno, todo campo nmerico alinhado pela direita e possui um formato padro de 12 dgitos, no mnimo, isso equivale a 12 caracteres resultantes, na converso. Nmero:
3 5
Caracter:
3 5
69 6.2.4 - Funo COMPRESS Funo que retira caracteres, individualmente, de um argumento. <varivel>=COMPRESS(arg1,[arg2]);
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo; Primeiro argumento, especifca a varivel ou expresso caracter cujo contedo ser compactado; Segundo argumento, opcional e entre aspas, especifca um ou mais caracteres que sero retirados, individualmente, do primeiro argumento.
arg1
arg2
OBS:Se o segundo argumento no for especificado, a funo assumir o branco como caracter default para ser retirado. 6.2.5 - Funo LENGTH Funo que informa o tamanho, em bytes, do argumento. <varivel>=LENGTH(arg);
varivel Nome at 32 caracteres que armazenar o resultado, numrico, do processamento da funo; Argumento, especifca a varivel ou expresso caracter cujo contedo ser determinado o tamanho;
arg
70 Ex.37:
Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variaveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caracter que identifica a Secretaria de Segurana Pblica, armazenado-os em duas novas variveis: RG_NUM e RG_SSP.
DATA NOVO ; INFILE C:\ID\RG.DAT; INPUT RG $ 18. ; RG1=0 ; RG2=0 ; AUX1=COMPRESS ( RG ) ; AUX2=LENGTH ( AUX1 ) ; DO I=1 TO AUX2 ; AUX3=SUBSTR ( AUX1, I, 1 ) ; IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ; ELSE RG2=RG2+1 ; END ; RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ; RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 ); RG_SSP = UPCASE ( RG_SSP ) ; DROP AUX1 AUX2 AUX3 I RG1 RG2 ; RUN; Arquivo: RG.TXT
01 5 2 2 02 8 3 2 03 4 4 3 04 1 s 9 05 6 s 7 06 6 p 4 07 s / 8 08 s s 8 09 p p s s p / r g 10 / 11 d 12 f 13 14 15 16 17 18
PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG
71 6.2.6 - Funo SCAN Funo que retorna caracteres de acordo com a posio relativa de um caracter especfico. <varivel>=SCAN (arg1, arg2, [arg3]) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Primeiro argumento, especifca a varivel ou expresso caracter cujo contedo ser manipulado. Segundo argumento, determina a posio dos caracteres, que se deseja, em relao a um caracter especfico; Terceiro argumento, opcional e entre aspas determina o caracter que servir como limite entre os caracteres desejados. Se no for especificado, todos os caracteres especiais sero limitrfes.(! @ # $ % & * - , ; branco).
arg1
arg2
arg3
OBS: O resultado da funo SCAN ser armazenado numa varivel com o tamanho de 200 bytes, por default. Ex.38:
DATA PALAVRA; REGIAO=FRANA#ALEMANHA#ESPANHA#ITLIA; 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; The SAS System PAIS FRANA ALEMANHA ESPANHA ITLIA
Funo que retorna, um valor numrico, que representa a primeira posio de um determinado caracter dentro do argumento.
arg1
arg2
OBS: Se o caracter especificado no for encontrado a funo index retornar o valor zero.. Ex.39:
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; The SAS System LOCAL 17
13 25 0
PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG
Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo possui as variaveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se separar da varivel RG o valor numrico do valor caracter 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 5 2 2 02 8 3 2 03 4 4 3 04 1 s 9 05 6 s 7 06 6 p 4 07 s / 8 08 s s 8 09 p p s s p / r g 10 / 11 d 12 f 13 14 15 16 17 18
PROC PRINT NOOBS ; VAR RG_NUM RG_SSP ; RUN ; SAS RG_NUM 584166 234 22397488 RG_SSP SSP/DF SSP/SP SSP/RG
75 6.3 - Funes de Truncamento 6.3.1 - Funo INT Funo que retorna com o valor inteiro de uma varivel ou de uma expresso. <varivel> = INT ( argumento ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.
6.3.2 - Funo ROUND Funo que retorna um valor arredondado de uma varivel ou expresso numrica. <varivel> = ROUND ( arg1, [arg2] ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo. Varivel ou expresso numrica da qual se deseja arredondar. Argumento opcional, especifica o mltiplo do arredondamento e a posio numrica aonde ser feita o arredondamento ( 1, 10, . . . ou 0.1, 0.01, . . . ). Se no for especificado, a funo arredondar para um valor inteiro.
arg1 arg2
76 Ex.42:
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 3 1 5 1 PROC PRINT DOUBLE; RUN ; 02 2 9 5 5 03 6 7 8 8 04 . 7 . 8 05 5 . 8 . 06 4 0 8 2 9 9 07
The SAS System 13:24 Monday, January 22, 1996 OBS 1 2 3 4 X 326.54 1977.09 558.88 1588.29 TRUNCA INTEIRO DEZENA CENTENA DECIMO CENTES 326 1977 558 1588 327 1977 559 1588 330 1980 560 1590 300 2000 600 1600 326.5 1977.1 558.9 1588.3 326.54 1977.09 558.88 1588.29 MULT5 325 1975 560 1590
77 6.4 - Funes Estatsticas Descritivas 6.4.1 - Funo SUM Funo que efetua um somatrio de valores entre variveis numricas, para cada registro de dados. <varivel> = SUM ( [OF] var1, var2, . . . varn ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.
var1, var2, . . . varn Nome das variveis numricas que se deseja efetuar um somatrio. OF Opcional, identifica um intervalo de variveis.
6.4.2 - Funo MEAN Funo que efetua uma mdia entre os valores de variveis numricas, para cada registro de dados. <varivel> = MEAN ( [OF] var1, var2, . . ., varn ) ;
varivel Nome at 32 caracteres que armazenar o resultado do processamento da funo.
var1, var2, . . . varn Nome das variveis numricas que se deseja efetuar uma mdia. OF Opcional, identifica um intervalo de variveis.
78 Ex.43:
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 1 2 3 8 3 . . 4 5 5 5 2 1 6 5 7 7 . . 8 2 4 9 2 1 10 4 8 11 . . 12 8 9 13 2 1 14 5 8 15 . . 16 7 9 17 2 2 18 5 0 19 . . 20 8 5 21 2 2 22 2 0 23 . . 24 0
PROC PRINT DATA=T.TEMP DOUBLE NOOBS ; RUN ; The SAS System 14:18 Monday, January 22, 1996 T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED
23.5 18.5
25.2 17.4
24.8 18.9
25.7 18.9
25.8 20.5
22.0 20.8
147 115
24.5000 19.1667
79 6.5 - Funes de Tratamento de Data e Hora 6.5.1 - Funo MDY Funo que gera uma data a partir de valores de dia, ms e ano
varivel
Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor numrico que representa o ms; Valor numrico que representa o dia; Valor numrico que representa o ano.
mm dd yyyy
varivel
Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor que representa uma data SAS.
data
80 6.5.3 - Funo TODAY Funo que retorna a data atual do ambiente de processamento. No possui argumentos. <varivel>=TODAY();
6.5.4 - Funo TIME Funo que retorna a hora atual do ambiente de processamento. No possui argumentos. <varivel>=TIME();
6.5.5 - Funes: HOUR, MINUTE e SECOND Funes que extraem de um valor tempo a hora, minuto e segundo respectivamente.
varivel
Nome at 32 caracteres que armazenar o resultado do processamento da funo; Valor que representa o tempo no formato SAS.
tempo
81 6.6 - Funes MACRO 6.6.1 - Funo %SYSFUNC Funo macro que permite executar funes de DATA Step em qualquer parte do programa SAS. %SYSFUNC(funo, [formato]);
funao formato Funo de DATA Step que ser utilizada; Argumento opcional que especifica um formato para o resultado da funo.
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; TITLE1 Relatrio de Idades; TITLE2 Em relao a data de hoje: %SYSFUNC(TODAY(), ddmmyy10.); PROC PRINT;RUN;
Relatrio de Idades Em relao a data de hoje: 04/04/2006 IDADE_ ANO 29 5 71 39 51 IDADE_ DIA 8452 -115 23881 12046 16375
Obs 1 2 3 4 5
DIA 10 25 14 8 3
MES 11 4 8 1 3
- Gere um relatrio para verificar os resultados; OBS: Utilize as funes: 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, temporrio, e as novas variveis novas: SAL_FAM Salrio famlia, s para quem SALARIO*(1+(FILHOS*0.05)) ; possui filhos. Ser o resultado do
SAL_COM Salrio comissionado, s para quem possui cargo de chefia. Ser o resultado do SALARIO*1.2 ; SAL_SOM Somatrio de salrios. Ser o resultado do somatrio entre as variveis: SAL, SAL_FAM e SAL_COM; SAL_MED Mdia dos salrios. Ser o resultdo da mdia entre as variveis: SAL, SAL_FAM e SAL_COM ; - Gere um relatrio para visualizar os resultados;
OBS: Utilize as funes SUM e MEAN, para somar e tirar a mdias entre as variveis, respectivamente.
(NO)NUMBER Opo que determina a impresso ou no, do nmero da pgina; PAGENO= Opo que especifica a numerao inicial das paginas de OUTPUT, para cada execuo;
LINESIZE= Opo que especifica o tamanho da linha de impresso do relatrio (nmero de colunas); PAGESIZE= Opo que especifica o tamanho da pagina de impresso (nmero de linhas); Opo que especifica o nmero mximo de erros a serem exibidos no LOG;
ERRORS=
(NO)REPLACE Opo que determina a sobreposio ou no, dos dados de um arquivo; SORTSIZE= Opo que especifica a quantidade de memria que o procedimento SORT poder utilizar (em bytes); Opo que especifica a quantidade de memria que o sistema SAS poder utilizar para qualquer processamento.
MEMSIZE=
85 Ex.45:
LIBNAME ARQ "C:\SAS" ; OPTIONS COMPRESS=YES DEVICE=WIN PS=66 LS=132 NODATE ; DATA ARQ.OPT ; SET ARQ.DADOS ; <comando> <comando> . . . PROC PRINT ; RUN ;
SER GERADO UM ARQUIVO COMPACTADO E, UM RELATRIO COM 66 LINHAS E 132 COLUNAS POR PGINA, SEM A IMPRESSO DA DATA NO CABEALHO, NO AMBIENTE WINDOWS.
Ex.46:
LIBNAME ARQ "C:\ALUNO" ; OPTIONS SORTSIZE=200M PS=60 LS=132 DEVICE=WINPRTM; PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN; PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;
O PRO CEDIMENTO SORT PODER UTILIZAR ATE 200MBYTES DE MEMRIA PARA PROCESSAR E SER GERADO UM RELATRIO COM 60 LINHAS E 132 COLUNAS POR PGINA, NA IMPRESSORA PADRO DO WINDOWS.
Ex.47:
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 P M S 02 A A O 03 U R N 04 L C I 05 O I A O 06 07 08 5 5 5 09 9 7 1 10 . . . 11 0 3 3 12 13 9 8 5 14 9 3 0 15 . . . 16 5 0
PROC PRINT NOOBS SPLIT="" ; RUN ; The SAS System NOME ALTURA EM POLEGADAS 59.0 57.3 51.3 PESO EM LIBRAS 99.5 83.0 50.5
Ex.48:
PROC PRINT DATA=ARQ.CADASTRO LABEL; VAR NOME DATA_ANIV SALARIO; LABEL DATA_ANIV=Data de Aniversrio SAL=Salrio; FORMAT DATA_ANIV DDMMYY10. SALARIO COMMAX12.2 ; RUN; The SAS System Data de Aniversrio 16/04/1985 06/02/1941 24/07/1930 03/07/1979 06/06/1967 18/07/1977 27/03/1950 17/03/1943 16/03/1957
Obs 1 2 3 4 5 6 7 8 9
NOME SONTAS,MARCIO SERPA,MARCO LONAS,PAULO CERTO,MARCO BENTES,MARCO MARUEL,PAULO LUILA,ROSANE APARECIDO,ELIANE SAUL,ROSANE
88 7.4 - Comando ODS Output Delivery System (ODS), um recurso especial para a manipulao dos resultados gerados pelos procedimentos SAS, permitindo a escolha de padres de impresso e visualizao, gerao de arquivos e gerao de documentos.
opo genrica: FILE= Especifica a localizao e nome do arquivo gerado com o padro.
89 Ex.49:
ODS HTML FILE="C:\temp\teste.html" STYLE=minimal; PROC PRINT DATA=ARQ.CADASTRO(OBS=10) LABEL ; VAR NOME DATA_ANIVERSARIO SALARIO ; LABEL DATA_ANIVERSARIO="Data de Aniversrio" SALARIO="Salrio"; FORMAT DATA_ANIV DDMMYY10. SAL COMMAX12.2 ; RUN; ODS HTML CLOSE;
The SAS System Data de Aniversrio 16/04/1985 06/02/1941 24/07/1930 03/07/1979 06/06/1967 18/07/1977 27/03/1950 17/03/1943 16/03/1957 04/09/1962
Obs 1 2 3 4 5 6 7 8 9 10
NOME SONTAS,MARCIO SERPA,MARCO LONAS,PAULO CERTO,MARCO BENTES,MARCO MARUEL,PAULO LUILA,ROSANE APARECIDO,ELIANE SAUL,ROSANE PISCO,ROSANE
Salrio 3.240,05 26.540,67 55.211,27 3.121,80 9.452,31 3.288,80 25.628,72 . 24.949,40 9.710,13
90 8 - PROCEDIMENTOS ESTATSTICOS BSICOS 8.1 - Procedimento MEANS Procedimento que produz relatrios com estatsticas descritivas simples para variveis numricas. O relatrio gerado possui uma formatao padro com algumas estatsticas: Mdia (MEAN), Desvio Padro (STD), valor mximo (MAX) e o valor mnimo (MIN).
PROC MEANS [opes] ; CLASS <lista de variveis> ; VAR <lista de variveis> ; BY <lista de variveis> ; OUTPUT <opes>;
opes DATA= Nome do arquivo SAS para ser processado; MAXDEC= Especifica o nmero de casas decimais (no mximo 8); NOPRINT Opo para no gerar o relatrio; Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: No necessrio executar, antes, um PROC SORT; Espec ifica as variveis numricas que sero processadas pelo procedimento; Especifica uma ou mais variveis que possibilitam o agrupamento de dados. OBS: necessrio executar, antes, um PROC SORT; Nome do arquivo que armazenar os resultados do procedimento;
CLASS
VAR
BY
OUTPUT OUT=
estatstica especificada (MEAN, SUM, MAX, MIN, etc). OBS: Na mesma ordem que aparece no comando VAR.
91 Ex.50:
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.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 TURNO N Obs N Mean Maximum Minimum ------------------------------------------------------------------------------1 12 12 24.42 38.00 18.00 2 6 6 29.17 36.00 21.00
92 Ex.53:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC SORT DATA=ARQ.MEDIA ; BY TURNO ; PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ; BY TURNO ; VAR IDADE ; RUN ;
The SAS System Analysis Variable : IDADE ---------------------------------- TURNO=1 -------------------------------N Mean Maximum Minimum ------------------------------------------------------12 24.42 38.00 18.00 ---------------------------------------------------------------------------------------- TURNO=2 -------------------------------N Mean Maximum Minimum ------------------------------------------------------6 29.17 36.00 21.00
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; PROC PRINT DATA=TESTE;RUN;
1 SAL_ MINIMO 3000.40 3000.40 25002.08 3064.58 SAL_ MEDIA SAL_ MAXIMA 55998.09 27538.21 55998.09 24988.44
Obs empresa 1 2 3 4
ID_MEDIA
ID_MAXIMA 79 30 79 49
93 8.2 - Procedimento FREQ Procedimento que produz tabelas simples e tabelas cruzadas, da frequncia de variveis numricas e caracter.
TABLES Especifica as variveis e a regra de formao da tabela de frequncia. Utiliza-se o caracter * para cruzar variveis. Ex.: (a*b , y*x , peso*altura). opes LIST Os resultados sairo num formato listado ao invs de uma tabela cruzada. MISSING Inclui os valores "missing" na tabela. NOPRINT No gera relatrio de sada. OUT= Especifica arquivo SAS de sada. NOCUM No gera as colunas de frequncia e percentual acumulativo. NOPERCENT No gera as colunas com percentuais. NOFREQ No gera a coluna de frequncia.
94 Ex.55:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO IDADE ; RUN ; The SAS System
Cumulative Cumulative SEXO Frequency Percent Frequency Percent --------------------------------------------------------------------F 9 50.0 9 50.0 M 9 50.0 18 100.0
Cumulative Cumulative IDADE Frequency Percent Frequency Percent ---------------------------------------------------------------------18 2 11.1 2 11.1 19 1 5.6 3 16.7 20 1 5.6 4 22.2 21 2 11.1 6 33.3 22 2 11.1 8 44.4 25 2 11.1 10 55.6 26 1 5.6 11 61.1 28 1 5.6 12 66.7 29 1 5.6 13 72.2 32 1 5.6 14 77.8 33 1 5.6 15 83.3 35 1 5.6 16 88.9 36 1 5.6 17 94.4 38 1 5.6 18 100.0
95 Ex.56:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO*EMPRESA ; RUN ;
The SAS System The FREQ Procedure Table of SEXO by EMPRESA SEXO Frequency Percent Row Pct Col Pct ATLAS MANTAS Total F 7 7 14 28.00 28.00 56.00 50.00 50.00 63.64 50.00 M 4 7 11 16.00 28.00 44.00 36.36 63.64 36.36 50.00 Total 11 14 25 44.00 56.00 100.00 EMPRESA
96 Ex.57:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC FREQ DATA=ARQ.DADOS ; TABLES SEXO*IDADE / LIST ; RUN ;
The SAS System 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; PROC PRINT DATA=TESTE;RUN;
1 The FREQ Procedure Table of SEXO by empresa SEXO empresa
Frequency Row Pct Col Pct ATLAS S.MALTA LTPARIS IN A. DA STITUTO F 74 66 106 104 21.14 18.86 30.29 29.71 62.71 63.46 65.43 62.65 M 44 38 56 62 22.00 19.00 28.00 31.00 37.29 36.54 34.57 37.35 Total 118 104 162 166
Total
350
200
550
2 Obs 1 2 3 4 5 SEXO F F F F M empresa COUNT 74 66 106 104 44 PERCENT 13.4545 12.0000 19.2727 18.9091 8.0000
VAR
BY
TABLE
opes OBS:
Regras de formao:
element os: variveis, funes estatsticas (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
Ex.60:
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.61:
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
100 Ex.62:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO EMPRESA ; VAR ALTURA; TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE; RUN ;
The SAS System 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
101 Ex.63:
LIBNAME ARQ "G:\KUSEL\SAS" ; PROC TABULATE DATA=ARQ.DADOS ; CLASS SEXO ALTURA ; TABLE ALTURA , SEXO ALL; RUN ;
The SAS System 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
102 Ex.64:
TITLE1 "Relatrio com a Mdia de Salrio"; TITLE2 "e a Distribuio Percentual dos Funcionrios por Empresa"; OPTIONS LS=130; PROC TABULATE DATA=ARQ.CADASTRO MISSING; CLASS SEXO EMPRESA; VAR SAL ; TABLE SEXO="Sexo"*EMPRESA="Empresa" ALL="Total", (N*f=6. PCTN="%"*f=commax6.2 SAL=""*MEAN="Mdia de Salrio"*f=commax12.2) ; RUN ; OBS: *f= *= Formata a varivel Especifica um LABEL para a varivel
Relatrio com a Mdia de Salrio e a Distribuio Percentual dos Funcionrios por Empresa Mdia de N % Salrio Sexo Empresa F 74 13,45 . ATLAS S.A. 66 12,00 3.707,33 MALTA LTDA 106 19,27 30.437,38 PARIS INSTITUTO 104 18,91 9.935,85 M 44 8,00 . ATLAS S.A. 38 6,91 3.482,55 MALTA LTDA 56 10,18 31.465,62 PARIS INSTITUTO 62 11,27 10.157,55 Total 550100,00 16.299,47
103 5 LABORATRIO
Utilizao dos procedimentos estatsticos bsicos.
Utlizando o arquivo SAS CADASTRO, gerado no 1 LABORATRIO : 1 - Gere um relatrio com a mdia, o valor mximo, o valor mnimo e o desvio padro das variveis PESO e ALTURA, classificados por SEXO e com apresentao dos resultados com duas casas decimais. 2 - Gere um arquivo SAS, permanente, no diretrio c:\curso\sas, com a mdia , o valor mximo e o valor mnimo da varivel IDADE, classificados por EMPRESA. - Este programa no deve gerar relatrio; - Dever gerar trs variveis referentes a mdia, o valor mximo e o valor mnimo da idade: MED_ID, MAX_ID e MIN_ID; 3 - Com o arquivo gerado no item anterior, crie um programa que emita um relatrio ordenado por EMPRESA. - As variveis devero ser rotuladas: MED_ID="Idade Mdia" MAX_ID="Idade Mxima" MIN_ID="Idade Mnima" - Os resultados numricos devero aparecer formatados com pontos e vrgula.e com no mximo duas casas decimais; - Dever ser criado um ttulo: "Variao da Idade por Empresa" 4 - Gere um relatrio apenas coma mdia e somatrio de todas as variveis numricas do arquivo SAS, CADASTRO ordenados por EMPRESA. 5 - Gere um relatrio com as tabelas de frequncia de SEXO, IDADE, ESTADO CIVIL, FILHOS, EMPRESA e CARGO. 6 - Gere um relatrio com uma tabela de frequncia de SEXO versus IDADE. 7 - Gere um relatrio com uma tabela de frequncia, "listada", de SEXO versus IDADE, e que no contenha as colunas de valores acumulativos e gere um arquivo de sada com os resultados. Imprima o arquivo gerado com a PROC PRINT.
104
8 - Gere um relatrio com duas tabelas de frequncia de ESTADO CIVIL versus FILHOS e SEXO versus EMPRESA na mesma PROC. 9 - 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 utilizado a opo MEAN para formar as colunas; (Utilize o procedimento TABULATE) 10 - Gere um relatrio com uma tabela que apresente a mdia e o somatrio da varivel SALARIO, classificado por SEXO versus EMPRESA. - A expresso SEXO versus EMPRESA dever formar as linhas; - A varivel SALARIO dever formar as colunas; - Dever ser utilizado as opes MEAN e SUM para formar as colunas - Tamanho da pgina de 55 linhas e 80 colunas; (Utilize o procedimento TABULATE) 11 - Acrescente a tabela do relatrio anterior : - Um totalizador na linha e na coluna: ALL; - Rotule todos os elmentos (variveis, estatsticas e totalizadores); - Formate os resultados numricos com pontos, vrgula e duas casas decimais; - Ttulo: Apresentao do Salrio por Sexo e Empresa; - Sem a data e paginao iniciando do 1; - Gere a tabela no padro HTML e PDF.
105
9 - RECURSO DE FORMATAO ESPECIAL 9.1 - Procedimento FORMAT
O procedimento FORMAT permite que o usurio crie os seus prprios formatos de leitura e impresso, para variveis numricas e caracter. PROC FORMAT ; VALUE <nome> [( opes )] <intervalo> = "<descrio>" ;
VALUE Comando que define um formato diferente para os valores de uma varivel numrica ou caracter. -Nome do formato at 8 caracteres; -Nome de formatos para serem aplicados em variveis caracter, obrigatriamente, devero iniciar com $ ; -Nomes de formato no podem terminar com nmeros. MULTILABEL NOTSORTED Permite sobreposio de intervalos; No ordenar as descries;
nome
opes
OBS: A opo MULTILABEL s funcionar em procedimentos que possuem o comando CLASS, que permite ativar o uso do formato, com sobreposio, atravs da sua opo MLF CLASS <varivel> / MLF intervalo -Especifica um valor, ou intervalos, que os valores de uma varivel poder assumir durante a formatao. -Valores ou intervalos de variveis caracter, devero vir entre aspas. -Parmetros epeciais so utilizados para definir limites de intervalos: LOW Menor valor encontrado; HIGH Maior valor encontrado; OTHER Qualquer outro valor no identificado; < No inclui o valor do intervalo. descrio -Valor, no qual a varivel formatada, assumir no momento de sua utilizao; -No mximo 200 caracteres entre aspas;
106
Ex.65:
LIBNAME ARQ "G:\KUSEL\SAS" ; OPTIONS PS=30 ; PROC FORMAT ; VALUE $TUR "1"="MANHA" "2"="TARDE" OTHER="DADO ERRADO" ; VALUE ALT LOW-<1.50="BAIXO" 1.50-<1.70="MEDIO" 1.70-HIGH="ALTO" ; PROC PRINT DATA=ARQ.DADOS ; FORMAT TURNO $TUR. ALTURA ALT. ; RUN ; The SAS System 15:01 Tuesday, January 30, 1996 OBS NOME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Alfredo Alicia Carol Paulo Maria Ricardo Tomas Joao Marcia Ligia Laura Paula Carlos Jaime Joice Filipe Roberto Lia SEXO IDADE ALTURA PESO TURNO M F F M F M M M F F F F M M F M M F 25 22 22 29 20 35 26 38 18 19 18 21 21 28 25 32 33 36 ALTO ALTO MEDIO ALTO MEDIO ALTO ALTO ALTO MEDIO ALTO MEDIO MEDIO MEDIO ALTO ALTO ALTO ALTO MEDIO 80 65 65 90 70 83 75 90 50 80 69 58 55 75 60 110 89 76 MANHA MANHA MANHA MANHA MANHA MANHA MANHA MANHA MANHA MANHA MANHA MANHA TARDE TARDE TARDE TARDE TARDE TARDE
107
6 LABORATRIO Criar, utilizar e manipular formatos ( Procedimento FORMAT ) 1 - Criar um programa que gere formatos especiais para os valores das variveis: IDADE, PESO, ALTURA, ESTADO CIVIL e SALARIO . Gere vrios relatrios que utilize esses formatos. Criar rtulos para varivel IDADE: 15-25 = "15 a 25 anos" 26-50 = "26 a 50 anos" 51-HIGH = "Mais de 50 anos" Criar faixas para a varivel PESO: 50-<70 = "50 a 69" 70-<80 = "70 a 79" 80-<100 = "80 a 99" Criar rtulos para a varivel ALTURA: 1.50-<1.66 = "1,50 a 1,65" 1.67-<1.80 = "1,66 a 1,79" 1.80-HIGH = "Mais de 1,80" Criar rtulos para a varivel ESTADO CIVIL: "1" = "SOLTEIRO" "2" = "CASADO" "3" = "SEPARADO" Criar faixas para a varivel SALARIO: do menor at 2000, no incluso = "Iniciante" de 2000 at 4000, no incluso = "Junior" de 4000 at 7000, no incluso = "Senior" de7000 at 10000, no incluso = "Gerente" acima de 10000, no incluso = "Diretor" Do menor ao maior valor, missing=Total missing=Desempregado; OBS: Os dois ltimos intervalos so um sobreposio
108
2 - Gere um relatrio com tabelas de frequncia de IDADE, ALTURA, PESO e ESTADO CIVIL com os dados formatados . (Utilize o procedimento FREQ com o comando FORMAT) 3 - Gere um relatrio com uma tabela de frequncia de IDADE versus ESTADO CIVIL, com os dados formatados (Utilize o procedimento FREQ com o comando FORMAT) 4 - Gere um relatrio com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os dados de SALARIO formatados. - Utilize o procedimento TABULATE; - Comando FORMAT; - Comando CLASS com a opo MLF, apenas para SALARIO).
ARQ1
ARQ2
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 M S P C 02 A A A E 03 R N U L 04 C D L S 05 I R A O 06 O A 07 08 M F F M
DATA IN.ARQ2 ; INFILE C:\ARQ2.TXT INPUT NOME $ 1-7 IDADE 2. ; RUN ; Arquivo: ARQ2.TXT
01 M C P S 02 A E A A 03 R L U N 04 C S L D 05 I O A R A 06 O 07 08 2 2 1 1 09 5 2 8
DATA IN.CONCAT ; SET IN.ARQ1 IN.ARQ2 ; PROC PRINT DATA=IN.CONCAT ; RUN ; SAS OBS 1 2 3 4 5 6 NOME MARCIO SANDRA PAULA CELSO MARCIO CELSO SEXO M F F M
IDADE . . . . 25 22
7 8
PAULA SANDRA
18 15
111
10.2 - COMBINAO ORDENADA ( Match-Merging ) Combinao ordenada a unio de dois ou mais arquivos SAS em um nico arquivo, combinado e ordenado por uma ou mais variveis comum. Os arquivos devero estar ordenados, antes do "Match-Merging", pela varivel comum. MERGE <arquivo1> . . . <arquivon> ; BY <varivel comum> ;
ARQ1
ARQ2
PROC SORT DATA=ARQ1; BY <varivel comum>;RUN; PROC SORT DATA=ARQ2; BY <varivel comum>;RUN; DATA ARQ3 ; MERGE ARQ1 ARQ2 ; BY <varivel comum> RUN ;
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 OBS 1 2 3 4 NOME CELSO MARCIO PAULA SANDRA SEXO M M F F IDADE 22 25 18 15
113
7 LABORATRIO
1 - Monte um programa que gere um arquivo SAS (CONCAT) que ser a concatenao dos dados dos arquivos: PESSOAL e TRABALHO. Gere um relatorio com os dados do arquivo CONCAT, para visualizar o resultado. (Utilize os comandos DATA e SET)
2 - Monte um programa que gere um arquivo SAS (INTER) que ser a intercalao ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel comum CPF. Gere um relatrio com os dados do arquivo INTER, para visualizar o resultado. (Utilize os comandos DATA, SET e BY) OBS: Lembre-se os arquivos devem estar ordenados pela varivel comum.
3 - Monte um programa que gere um arquivo SAS (JUSTA) que ser a justaposio ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel comum CIC. Gere um relatrio com os dados do arquivo JUSTA, para visualizar o resultado. (Utilize os comandos DATA, MERGE e BY) OBS: Lembre-se os arquivos devem estar ordenados pela varivel comum.
114
11 - BIBLIOGRAFIA
MANUAIS: SAS Introductory Guide SAS Institute Inc. SAS Circle, Cary - NC Terceira Edio SAS Language Version 8 SAS Institute Inc. SAS Circle, Cary - NC Primeira Edio SAS Procedures Guide Version 8 SAS Institute Inc. SAS Circle, Cary - NC Terceira Edio SAS Guide to TABULATE Processing SAS Institute Inc. SAS Circle, Cary - NC 1987 Edition Curso de SAS/BSICO Soft Consultoria