Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

apostila sas, Notas de estudo de Análise de Sistemas de Engenharia

Apostila de SAS

Tipologia: Notas de estudo

2010

Compartilhado em 27/07/2010

luciana-sampaio-10
luciana-sampaio-10 🇧🇷

4.4

(19)

69 documentos

1 / 133

Documentos relacionados


Pré-visualização parcial do texto

Baixe apostila sas e outras Notas de estudo em PDF para Análise de Sistemas de Engenharia, somente na Docsity! Apostila de Treinamento: SAS Programação I Revisão: 2010 Universidade Estadual de Campinas Centro Nacional de Processamento de Alto Desempenho - São Paulo 2 CONTEÚDO 1 - HISTÓRICO pag.04 2 - CURIOSIDADES pag.04 3 - DEFINIÇÃO BÁSICA pag.05 4 - COMERCIALIZAÇÃO pag.06 4.1 - Módulos SAS pag.06 4.2 - Solução de Negócios pag.07 5 - CONCEITOS BÁSICOS pag.08 6 - ARQUIVOS SAS pag.09 7 - ESTRUTURA DOS ARQUIVOS SAS pag.10 8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS pag.11 9 - SINTAXE DOS COMANDOS pag.12 10 - EXECUÇÃO pag.13 10.1 - Modo Interativo (Ambiente WINDOWS) pag.13 10.2 - Modo Não Interativo (Ambiente de COMANDOS) pag.20 11 - ESTRUTURA DATA STEP pag.21 11.1 - Introdução pag.21 11.2 - Comando LIBNAME pag.23 11.3 - Comando DATA pag.24 11.4 - Comando INFILE pag.25 11.5 - Comando SET pag.26 11.6 - Comando INPUT pag.27 11.6.1 - INPUT COLUNADO pag.28 11.6.2 - INPUT FORMATADO pag.29 11.6.3 - Descrição de um Campo Data pag.30 11.6.4 - Controles Especiais do Comando INPUT pag.32 11.6.5 - Detalhes do Comando INPUT pag.33 1º LABORATÓRIO pag.34 12 – ESTRUTURA PROC STEP pag.35 12.1 - Introdução pag.35 12.1.1 - Comando VAR pag.36 12.1.2 - Comando BY pag.36 12.1.3 - Comando TITLE pag.37 12.1.4 - Comando FOOTNOTE pag.37 12.2 - Procedimento PRINT pag.38 12.3 - Procedimento SORT pag.40 13 - ARQUIVO DE MENSAGENS - "SAS Log" pag.42 2º LABORATÓRIO pag.44 14 - COMANDOS BÁSICOS DE PROGRAMAÇÃO SAS pag.46 14.1 - Comando de Atribuição (=) pag.46 14.2 - Comando RETAIN pag.48 14.3 - Comando IF-THEN/ELSE pag.49 14.4 - Comando WHERE pag.52 14.5 - Comando DO/END pag.53 14.6 - Comando LENGTH pag.54 14.7 - Comando DO/END Iterativo pag.55 5 3 - DEFINIÇÃO BÁSICA O SAS é um software integrado para análise de dados, que consiste de vários produtos que permitem: - Recuperação de dados; - Gerenciamento de arquivos; - Análise estatística; - Acesso a Banco de Dados (ORACLE, DB2, etc); - Geração de gráficos; - Geração de relatórios; - Geração de aplicativos; - Soluções de negócios (Análise de Risco, Gerenciamento de Campanha, “Data Mining”); É 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, Windows, OS/2, Apple ) - UNIX ( Solaris, AIX, HP-UX, Irix, Linux ) 6 4 - COMERCIALIZAÇÃO 4.1 - Módulos do SAS SAS/BASE Módulo básico, obrigatório em toda instalação; SAS/STAT Módulo estatístico; SAS/GRAPH Módulo gráfico ( Histogramas, plots, ... ); SAS/OR Módulo de análise e pesquisa operacional (Programação linear, Análise de Caminho Crítico); SAS/QC Módulo para análise de controle de qualidade; SAS/ETS Módulo de econometria (Séries Temporais, Modelagem de Equações Simultâneas); SAS/IML Módulo para análise e operação de matrizes; SAS/ACCESS Módulo para acesso aos diversos tipos de Banco de Dados; SAS/CONNECT Módulo para conexão entre ambientes operacionais heterogêneos; SAS/AF Módulo para desenvolvimento de aplicações; SAS/FSP Módulo para facilitar o acesso a arquivos com programação de telas; 7 4.2 - Solução de Negócios Customer Relationship Management http://www.sas.com/offices/latinamerica/brazil/solutions/crm/index.html Financial Management http://www.sas.com/offices/latinamerica/brazil/solutions/financial/index.html Human Capital Management http://www.sas.com/offices/latinamerica/brazil/solutions/hcm.html Information Technology Management http://www.sas.com/offices/latinamerica/brazil/solutions/itmgmt/index.html Patent Discovery & Analysis http://www.sas.com/offices/latinamerica/brazil/solutions/patent/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 Supplier Relationship Management http://www.sas.com/offices/latinamerica/brazil/solutions/srm/index.html Supply Chain Management http://www.sas.com/offices/latinamerica/brazil/solutions/supplychain/index.html 10 7 - ESTRUTURA DOS ARQUIVOS SAS O arquivo SAS é um conjunto de dados arrumados num formato de tabela. NOME SEXO IDADE ALTURA As colunas nas tabelas são chamadas de variáveis: - Variáveis correspondem aos campos de dados; - Cada variável recebe um nome; - Para o SAS, só existem dois tipos de variáveis: caractere (até 32K caracteres - 32KBytes) numérica (Representação IEEE - 8Bytes) As linhas na tabela são chamadas de observações (ou registros). Não existe limite para o número de observações. Um Arquivo SAS é dividido em duas partes: Descritora Contém a descrição do arquivo: Tamanho do arquivo, número de registros, nome, tipo, tamanho e formato de variáveis, etc; Dados Contém os dados do arquivo. 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 11 8 - NOMECLATURA PARA ARQUIVOS E VARIÁVEIS Todos os nomes de arquivos e variáveis deverão seguir as seguintes regras: - Possuir de 1 à 32 caracteres; - Começar com letra (A-Z); - Pode continuar com números, letras ou travessões. 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 Todo comando SAS começa com uma palavra-chave (identificação), e termina com o ponto e virgula (;). - Os comandos podem começar e terminar em qualquer parte da linha; - Um comando pode se estender por diversas linhas; - Vários comandos podem ficar na mesma linha. Ex.2: DATA EXEMPLO1 ; INFILE “C:\TEMP\DADOS.DAT” ; 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 ; Fl Ed ma Tonks Sobticos Windom Hetp a [+07 aAjabem ima *xmapoa e | E pa pu — 16 JANELA DE OPÇÕES DE CONFIGURAÇÃO Tools ==> Options ==> System... LASER =Jojx] *| Ele Mem Tools Solutions MWindo =jalx] Libraries File Shortcuts 8% Options (ÊY Communications (&Y Ersionment control My Files (8 Input control IS Graphics E iáy Log and procedure output control AA SAS log - “ay Procedure output (ay SAS log and procedure output (RM DDS Printing (8 Macro ErÉM Sort i&y System administration ptiorfs) of SAS log and procedure output [ Walue [ Description Print date on top of page Display details in dinectory lists Line size for 545 output Character for missing numeric value Print page number Number of lines printed per page Results. (,] Explorer E BAstan) À CONFIGURAÇÃO DE TECLADO Tools ==> Options ==> Keys = fe dt Vem Jock Sokiora iyóndom fep File Shortcuts Elba âjtche = AAAaA na x Leth tadeRo 227772727 TERITI = Em = ET [21 JjSsusatres|npau sos Definition Alhelp reshos end; Sguubeit buffer =def auto” recall Tibrame Ema | Elia tia | 7 E Une Marape ae tevenedy nosaing om sbstan | Pop Con fenda “ENT. ] PES «(KEYS «DEVE» | | 20 21 10.2 - Modo Não Interativo (Ambiente de COMANDOS) É uma maneira simples e rápida de execução de um programa SAS. O programa pode ser editado em qualquer editor, mas deverá ser e salvo em modo texto. Para executá-lo, basta ativar a janela de comandos do windows (“Executar ou cmd”): Iniciar ==> Executar... No diretório do programa SAS, serão gerados dois arquivos com o mesmo nome do programa: <programa>.lst Possui os resultados do programa; <programa>.log Possui mensagens da execução do programa. OBS: Sempre analise o arquivo com extensão log. Se não for criado o arquivo com a extensão lst, com certeza existirão erros no programa, que poderão ser identificados no arquivo log. 22 11 - ESTRUTURA DATA STEP 11.1 - Introdução - É a seção de um programa SAS, aonde se organizam e administram os dados, utilizando comandos de programação do SAS/BASE e alguma lógica de processamento. - A maioria dos comandos utilizados em DATA Step, só existem e só podem ser executados nessa seção; - Os comandos seguem uma hierarquia, ou seja, a execução de um determinado comando, pode depender da execução do comando anterior (lógica de processamento); - Os arquivos processados em um DATA Step, normalmente, são processados sequencialmente, ou seja, registro após registro; - Internamente, o DATA Step representa um “loop”, que repete todos os comandos a cada leitura de um novo registro do arquivo de entrada até encontrar o último registro, finalizando o DATA Step e seguindo para o próximo Step; - A execução de um programa SAS obedece a duas fases internas: Compilação e Execução; - Os comandos em um DATA Step, podem ser divididos em: Comandos de Declaração -Funcionalidade: durante a compilação; Comandos de Execução -Funcionalidade: durante a execução. OBS: Comandos de declaração não possuem nenhuma ação durante a execução. 25 11.3 - Comando DATA - Tipo: Comando de declaração; - Uso: Data Step; - Comando que sempre inicia um DATA Step; - Abre um novo arquivo DATA Set, vazio, em uma biblioteca SAS. DATA <bib>.<nome do arquivo> ; Ex.4: OBS: Não é obrigatório especificar a biblioteca, neste caso, o SAS irá utilizar a biblioteca padrão, também chamada de biblioteca temporária (WORK ). DATA ENDERECO ; DATA ARQ1 ARQ2 ARQ3 ; DATA ENT.CADASTRO ; DATA ; DATA _NULL_; 26 11.4 - Comando INFILE - Tipo: Comando de execução; - Uso: Data Step; - Comando que identifica e abre um arquivo externo de dados, somente para leitura (não é um arquivo no formato do SAS); - Normalmente é um arquivo de dados no formato texto (somente texto); - Este comando deve ser posicionado após o comando DATA e antes do comando INPUT. INFILE "<arquivo de dados>" [opções] ; Opções: 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 variável; Ex.5: INFILE "C:\DADOS\ARQ1.TXT" ; INFILE "A:\CADASTRO.PRN" ; INFILE 'C:\SAS\CAD.DAT' LRECL=380 PAD ; 27 DATA EXEMPLO ; INFILE 'C:\TESTE\DADOS.TXT' MISSOVER; . . . . . . . . . 30 11.6.1 - INPUT COLUNADO - Lê as variáveis especificando a sua posição na linha de dados (posição inicial e posição final). As variáveis devem estar alinhadas, fixas em colunas, no arquivo de leitura de dados. INPUT <variável> [$] <início>-<fim> [.decimal] ; variável Nome da variável, que será associada a uma coluna de dados. $ Caractere opcional que indica que a variável só irá conter dados alfanuméricos. Sem o $, significa que a variável será numérica. início Valor que indica a posição inicial da variável na linha de dados. fim Valor que indica a posição final da variável na linha de dados. .decimal Valor opcional, indica o número de posições decimais de uma variável numérica. Ex.7: 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 M A R C I O M 3 2 1 8 2 8 5 . 4 DATA FICHA ; INFILE “A:\CADASTRO.TXT”; INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ; RUN; 31 11.6.2 - INPUT FORMATADO - Lê as variáveis especificando o tamanho e, opcionalmente, o formato do campo na linha de dados. - É o tipo de INPUT mais poderoso e complexo do SAS. INPUT <variável> [$] <w.d> ou [fomatow.d] ; variável Nome da variável, que será associada a uma coluna de dados. $ Caractere opcional que indica que a variável só irá conter dados alfanuméricos. Sem o $, significa que a variável será numérica. w. Valor que indica o tamanho de um campo na linha de dados. w.d Valor que indica o tamanho de um campo numérico com casas decimais. formatow.d Campo opcional. Nome de um formato especial de leitura de dados: BINARYw.d Lê campo numérico no formato binário e o converte para decimal; COMMAw.d Lê campo numérico com vírgulas e as retira; Ew.d Lê campo numérico com notação científica; HEXw. Lê campo numérico em hexadecimal; DDMMYYw. Lê campo no formato padrão de datas dd/mm/yyyy. 32 11.6.3 - Descrição de um Campo Data - Campos que representam datas necessitam que sejam identificados pelo SAS através de um formato de leitura e armazenados como numéricos; - O valor numérico armazenado representa o número de dias em relação a uma data base SAS. - É um campo que obrigatoriamente deve ser lido com um formato de leitura para identificar a formatação da data. Formatos: DATE9. ==> 01JAN1960 DDMMYY10. ==> 01/01/1960 Formato padrão de uma constante data no SAS: 35 11.6.5 - Detalhes do Comando INPUT - Em campos numéricos, não são permitidos "brancos" entre os números; - Sinal (+ - ), ponto decimal (.) e notação científica para expoente ( E ), são permitidos em campos numéricos; - Campos tipo caractere podem ter, no máximo, 32K de caracteres; - São permitidos caracteres "brancos", em qualquer posição, em campos do tipo caractere; - Campos em branco (sem informação) são considerados como "missing value" (valor perdido). - Os campos de um registro de dados podem ser lidos em qualquer ordem. - Campos ou partes de um campo podem ser relidos. - Dados caracteres serão armazenados, alinhados pela esquerda, e os dados numéricos, alinhados pela direita; - Todos os tipos de INPUT, podem ser combinados num único comando INPUT; Ex.11: Detalhes de leitura INPUT PESO 17-20 NOME $ 1-8 IDADE 11-12 SEXO $ 9 ; INPUT NOME $ 1-8 PREFIXO $ 1-3 ENDERECO $ 10-40 APT $ 38-40 ; 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.) ; 36 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. 1- Criar um arquivo SAS, permanente, de nome CADASTRO, no diretório c:\curso\sas (Utilize os comandos LIBNAME e DATA ); 2 - Abra o arquivo de dados externo de nome CADASTRO.DAT no diretório 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 conteúdo do arquivo está dividido em diversos campos na seguinte ordem: Nome do Campo Tipo do Campo Tamanho do Campo Decimais Posição Inicial Detalhe 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 ANIVERSARIO Numérico 10 44 Campo formatado: Ex. 18/01/2005 ESTADO CIVIL Caractere 1 54 FILHOS Numérico 2 55 RG Caractere 15 57 CPF Caractere 11 72 EMPRESA Caractere 15 83 FUNCAO Caractere 12 98 ADMISSAO Numérico 9 110 Campo formatado: Ex 18JAN2005 SALARIO Numérico 12 2 119 Campo formatado: Ex. 3.548,25 4 - Releia parte do campo EMPRESA, na posição 89, defina a variável TIPO DE EMPRESA, com 9 caracteres; 5 - Gere um relatório com os resultados da leitura do arquivo de dados, com os comandos abaixo: PROC PRINT;RUN; 40 12.1.1 - Comando VAR - Tipo: Comando de declaração; - Uso: Proc Step - Comando comum à maioria das PROCS. Determina as variáveis do arquivo SAS que serão processadas pelo procedimento. VAR <variável1> <variável2> ...<variáveln> ; 12.1.2 - Comando BY - Tipo: Comando de declaração; - Uso: Data Step e Proc Step; - Determina uma ou mais variáveis que permitirão o processamento em grupos; BY <variável1> <variável2> ...<variáveln> ; OBS: Este comando exige que o arquivo esteja ordenado ou indexado pelas variáveis especificadas. 41 12.1.3 - Comando TITLE - Tipo: Comando de declaração; - 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>" ; OBS: Um título permanece ativo até que seja modificado, ou eliminado com o comando: TITLE; 12.1.4 - Comando FOOTNOTE - Tipo: Comando de declaração; - Uso: Livre; - Pode ser codificado em qualquer parte do programa. Determina de 1 até 10 rodapés para o relatório a ser gerado pelo procedimento. FOOTNOTE "<rodapé>" ; FOOTNOTE1 "<rodapé>" ; . . . FOOTNOTE10 "<rodapé>" ; OBS: Um rodapé permanece ativo até que seja modificado, ou eliminado com o comando: FOOTNOTE; 42 12.2 - Procedimento PRINT - Procedimento do SAS que imprime, na saída padrão, os dados contidos nos arquivos SAS; - A saída padrão é, normalmente, a janela OUTPUT. PROC PRINT [opções] ; VAR <lista de variáveis> ; BY <lista de variáveis> ; SUM <lista de variáveis> ; opções DATA= Nome do arquivo SAS; DOUBLE Espacejamento duplo; NOOBS Suprime a coluna com o número de cada observação do arquivo; LABEL Imprime os "label's" das variáveis; VAR Determina uma lista de variáveis que serão impressas; BY Determina a quebra ou agrupamento do relatório, por uma ou mais variáveis; SUM Determina uma ou mais variáveis numéricas que serão totalizadas; 45 12.3 - Procedimento SORT - Procedimento do SAS que reordena os registros dos arquivos por uma ou mais variáveis, em ordem ascendente ou descendente; - Não possui saída impressa; - Pode gerar arquivo ordenado. PROC SORT [opções] ; BY <lista de variáveis> ; opções DATA= Nome do arquivo SAS para ser ordenado; OUT= Nome do arquivo SAS, aonde serão armazenado os dados ordenados. Se não for utilizada essa opção, a ordenação será feita em cima do arquivo original; NODUPKEY Opção que elimina os registros com chaves duplicadas; DUPOUT= Nome para arquivo com os registros duplicados; BY Determina uma ou várias variáveis como chaves de ordenação; OBS: A ordenação sempre é feita na ordem ascendente. Para ordenar na ordem descendente é necessário colocar o parâmetro descending, antes da variável a ser ordenada no comando BY. 46 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 SALARIO ANTUNES 1800 TERESA 1650 ------- FUNCAO 3450 ------------------------------- FUNCAO=OPER ------------------------------- NOME SALARIO JULIO 850 ------------------------------- FUNCAO=PROG ------------------------------- NOME SALARIO CLAUDIA 1200 MARCOS 1200 ------- FUNCAO 2400 ==== 6700 47 13 - ARQUIVO DE MENSAGENS - "SAS Log" - Ao se executar um programa SAS, é gerado um relatório de mensagens com notificações e erros da execução do programa (janela LOG). - Muito útil, deve ser sempre analisado, principalmente quando não aparecer o relatório com os resultados na janela OUTPUT, ou quando esse relatório 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 DATA EXEMPLO1 ; 2 INFILE "C:\DADOS.TXT" ; 3 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 PROC PRINT DATA=EXEMPLO1 NOOBS ; 5 VAR NOME FUNCAO ; 6 RUN ; NOTE: The PROCEDURE PRINT used 0.55 seconds. 50 51 Ex.17: DATA EXEMPLO1 ; INFILE 'C:\TEMP\LEITURA.DAT'; INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ; RUN; PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO SALARIO ; SUM SALARIO ; 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; 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 um 3 55 Z=ABS(SQRT(X)-2) ; 56 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 PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ; TITLE "Analise Contábil" ; VAR ANO RECEITA DESPESAS LUCRO DOLLAR ; SUM RECEITA DESPESAS LUCRO DOLLAR ; RUN ; Analise Contábil ANO RECEITA DESPESAS LUCRO DOLLAR 1994 5650 1050 4600 4693.8775 1995 6280 1140 5140 5244.8979 1996 8450 2450 6000 6122.4489 ===== ==== ===== ========= 20380 4640 15740 16061.2240 57 14.2 - Comando RETAIN - Tipo: Comando de declaração; - Uso: Data Step; - 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; RETAIN <variável> [valor inicial] . . . ; Ex.19: 60 IN esta no conjunto 61 Ex.20: Só o comando IF Ex.21: Operador de Comparação 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; DATA NOTA ; INFILE “A:\NOTAS.TXT” ; INPUT NOME $ 1-8 NOTA 9-11; IF NOTA LT 3 THEN CONCEITO="E" ; IF 3 <= NOTA < 5 THEN CONCEITO="D" ; IF 5 LE NOTA LT 7 THEN CONCEITO="C" ; IF 7 LE NOTA LT 9 THEN CONCEITO="B" ; ELSE CONCEITO="A" ; RUN; Arquivo: NOTAS.TXT 01 02 03 04 05 06 07 08 09 10 11 V I V I A N E 2 . 5 L I D I A 9 . 5 P A U L O 6 . 8 C L A U D I O 6 . 8 L U I Z 5 . 5 PROC PRINT NOOBS ; RUN ; The SAS System NOME NOTA CONCEITO VIVIANE 2.5 A LIDIA 9.5 A PAULO 4.5 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; 62 Ex.22: Operador Lógico Ex.23: Operador Lógico IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ; IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ; 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 PROC PRINT NOOBS ; VAR NOME CLASSE ; RUN ; The SAS System NOME CLASSE PAULA 100 FLAVIA 300 MARCOS 200 LUIS 300 65 14.5 - Comandos DO/END - Tipo: Comando de execução; - Uso: Data Step - Comando que define a execução de um bloco de comandos do SAS; - Todos os comandos existentes entre o comando DO e o comando END, deverão ser executados imediatamente; - Comandos DO e END podem ser usados para executar um grupo de comandos quando se encontra uma condição, normalmente, para ampliar o comando IF-THEN/ELSE. IF <expressão> THEN DO; <comandos> ; END ; Ex.25: 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 ; The SAS System NOME DEP_NO COM SALARIO DEP SAL CARLOS 201 1500 1500 VENDAS 3000 ELIANE 101 . 1800 ADMINI 1800 ALVARO 101 . 3800 ADMINI 3800 FATIMA 201 500 1500 VENDAS 2000 66 14.6 - Comando LENGTH - Tipo: Comando de declaração; - Uso: Data Step; - Comando que define uma variável, o tipo e o tamanho em bytes. - Deve ser posicionado sempre antes da utilização da variável. LENGTH variável [$] tamanho . . . variável [$] tamanho ; variável Nome da variável que deseja definir; $ Caractere opcional, que indica que a variável será alfanumérica.; tamanho Tamanho em bytes da variável. Ex.26: 67 14.7 - Comando DO/END Iterativo - Tipo: Comando de execução; - Uso: Data Step; - Comando utilizado para repetir um grupo de comandos “n” vezes. DO <indice>=<início>TO<fim> [BY] <cont> [WHILE/UNTIL] <(expressão)>; indice Variável auxiliar que armazena o valor da contagem no "loop". início Valor inicial do "loop". fim Valor final do "loop". 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 ; The SAS System NOME DEP_NO COM SALARIO DEP SAL CARLOS 201 1500 1500 VENDAS 3000 ELIANE 101 . 1800 ADMINISTRATIVO 1800 ALVARO 101 . 3800 ADMINISTRATIVO 3800 FATIMA 201 500 1500 VENDAS 2000 70 executados, pelo menos, uma vez. DO UNTIL <(expressão)> ; . . . END;<== ( Validação no fim ) expressão Combinação de variáveis que determina uma condição para a execução do "loop", entre parênteses. 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 71 14.10 - Comandos DROP e KEEP - Tipo: Comandos de declaração; - Uso: Data step e Opção de arquivos; - O comando DROP, elimina as variáveis de um arquivo SAS; - O comando KEEP, mantém as variáveis em um arquivo SAS; - Pode ser posicionado em qualquer lugar de um Data Step; - Esses dois comandos são exclusivos, ou se usa o comando DROP, ou se usa o comando KEEP, na lógica de um programa SAS. DROP <variável> <variável> . . . ; KEEP <variável> <variável> . . . ; variável Nome de uma variável que será eliminada, ou será mantida em um arquivo SAS (Data Set). 72 Ex.30: 14.11 - Opções de Arquivos SAS - Todos arquivos, com estrutura SAS, possuem 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 no qual o arquivo está sendo especificado; - Normalmente quando se especifica um arquivo, a ação, ou será de leitura dos dados, ou será de gravação dos dados. <arquivo SAS> [( <opção> <opção> . . . )] ; Opções KEEP e DROP <arquivo SAS> (DROP=<variável> <variável> . . ) ; <arquivo SAS> (KEEP=<variável> <variável> . . ) ; - Ação vinculada ao comando DATA (gravação de dados) DROP Não grava KEEP Somente grava 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; 75 14.13 - Comando OUTPUT - Tipo: Comando de execução; - Uso: Data Step; - O comando OUTPUT funciona de duas formas: Determina ao SAS que o registro que está sendo processado deve ser gravado no arquivo, imediatamente, e não, ao final do Data Step (OUTPUT implícito). 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 condição; ATENÇÃO! Ao se codificar um comando OUTPUT no programa, o SAS desliga o OUTPUT implícito ao final do DATA Step. A ação de salvar o dado fica por conta do programador. OUTPUT ; IF <expressão> THEN OUTPUT ; IF <expressão> THEN OUTPUT <arquivo> ; expressão Combinação de variáveis e valores que determinam uma condição a ser testada. arquivo Nome de um arquivo SAS, que já tenha sido especificado e criado pelo comando DATA. 76 Ex.33: 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 ; RUN; PROC PRINT DATA=ARQ.MULHERES ; VAR NOME ; RUN ; PROC PRINT DATA=ARQ.HOMENS ; VAR NOME ; RUN ; LIBNAME K1 "A:\" ; DATA K1.VARIACAO ; INFILE “A:\SAIDA.TXT”; INPUT NOME $ 1-7 NIVEL $ 8-9 VAL 10-13 SALARIO 14-18; SAL=0; IF NIVEL="10" THEN DO I=1 TO 2 ; SAL=SAL+SALARIO*VAL ; OUTPUT ; END ; DROP I VAL; RUN; Arquivo: SAIDA.TXT 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 R O S A N A 5 0 1 5 0 0 P A U L O 1 0 1 . 1 1 0 0 0 M A R I A 1 0 1 . 1 5 8 0 0 PROC PRINT ; RUN ; The SAS System OBS NOME NIVEL SALARIO SAL 1 PAULO 10 1000 1100 2 PAULO 10 1000 2200 3 MARIA 10 800 920 4 MARIA 10 800 1840 77 80 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 gravação dos registros. 81 6 - Monte um programa com um único DATA Step que crie seis novos arquivos SAS, permanentes, (PESSOAL , TRABALHO , FAMILIA, SOLTEIRO, CHEFE e SUB) no diretório c:\curso\sas ; - Cada arquivo deverá conter os seguintes dados: PESSOAL Variáveis: NOME, SEXO, IDADE, PESO, ALTURA, ANIVERSARIO, ESTADO CIVIL, FILHOS, RG e CPF TRABALHO Variáveis: NOME, RG, CPF, EMPRESA, FUNCAO, ADMISSAO, SALARIO e TIPO DE EMPRESA FAMILIA Pessoas que possuam filhos; SOLTEIRO Pessoas solteiras; CHEFE Pessoas que ocupam cargo de chefia (GERENTE e DIRETOR); SUB Pessoas que não ocupam cargos de chefia; - Gere relatórios para ver o conteúdo de cada arquivo; 82 15 - FUNÇÕES DO SAS 15.1 - Introdução - Toda função representa a execução de uma determinada rotina que irá retornar um determinado valor. - Toda função SAS é recursiva. Função pode ser executada dentro de outra função, como parâmetro da função; - As funções no SAS, normalmente, fazem parte de um comando de atribuição e sempre são utilizadas em um DATA Step. <variável> = <função>(OF argumento, argumento, . . . ) ; variável Nome até no máximo 32 caracteres, aonde será armazenado o valor retornado da execução da função. função Palavra-chave que identifica a função a ser processada. argumento Parâmetros de entrada para processamento da função. OF Parâmetro opcional que indica o processamento num intervalo de argumentos. Somente para as funções estatísticas. Tipos de funções: - Funções de Tratamento de Caractere; - Funções de Tratamento de Data e Hora; - Funções Matemáticas; - Funções de Estatísticas Descritivas; - Funções Trigonométricas; - Funções Hiperbólicas; - Funções de Truncamento; - Funções para geração de Números Randômicos; - Funções de Probabilidade; 85 15.2.3 - Função SUBSTR - Função que efetua a manipulação do conteúdo de uma variável caractere. <variável>=SUBSTR (arg1, arg2, [arg3]) ; variável Nome até 32 caracteres que armazenará o resultado do processamento da função. arg1 Primeiro argumento, determina a variável ou expressão caractere cujo conteúdo será manipulado. arg2 Segundo argumento, determina a posição inicial do conteúdo da variável, que será manipulado. arg3 Terceiro argumento, opcional, determina o número de caracteres do conteúdo da variável que se deseja manipular. Se não for especificado, a função pegará todos os caracteres, do valor do segundo argumento até o final. OBS: É possível manipular dados numéricos. Estes serão automaticamente convertidos para caractere, mas atenção, todo campo numérico é alinhado pela direita e possui um formato padrão de 12 dígitos, no mínimo, isso equivale a 12 caracteres resultantes, na conversão. Número: 3 5 Caractere: 3 5 86 15.2.4 - Função COMPRESS - Função que retira caracteres, individualmente, de um argumento. <variável>=COMPRESS(arg1,[arg2]); variável Nome até 32 caracteres que armazenará o resultado do processamento da função; arg1 Primeiro argumento, determina a variável ou expressão caractere cujo conteúdo será compactado; arg2 Segundo argumento, opcional e entre aspas, determina um ou mais caracteres que serão retirados, individualmente, do primeiro argumento. OBS:Se o segundo argumento não for especificado, a função assumirá o “branco” como caractere “default” para ser retirado. 15.2.5 - Função LENGTH - Função que informa o tamanho, em bytes, do argumento. <variável>=LENGTH(arg); variável Nome até 32 caracteres que armazenará o resultado, numérico, do processamento da função; arg Argumento, determina a variável ou expressão caractere cujo conteúdo será determinado o tamanho; OBS: O Valor retornado pela função LENGTH, sempre 87 será numérico. 15.2.6 - Função INDEX - Função que retorna um valor numérico que representa a primeira posição de um determinado caractere dentro do argumento. <variável>=INDEX (arg1, arg2) ; variável Nome até 32 caracteres que armazenará o resultado, numérico, do processamento da função. arg1 Primeiro argumento, determina a variável ou expressão caractere cujo conteúdo será manipulado. arg2 Segundo argumento, determina o caractere, entre aspas, que se deseja localizar no primeiro argumento. OBS: Se o caractere especificado não for encontrado, a função index retornará o valor zero. Ex.35: 90 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 PROC PRINT DOUBLE; RUN ; The SAS System 13:24 Monday, January 22, 1996 OBS X TRUNCA INTEIRO DEZENA CENTENA DECIMO CENTES MULT5 1 326.54 326 327 330 300 326.5 326.54 325 2 1977.09 1977 1977 1980 2000 1977.1 1977.09 1975 3 558.88 558 559 560 600 558.9 558.88 560 4 1588.29 1588 1588 1590 1600 1588.3 1588.29 1590 91 15.4 - Funções Estatísticas Descritivas 15.4.1 - Função SUM - Função que efetua um somatório de valores entre variáveis numéricas, para cada registro de dados. <variável> = SUM ( [OF] var1, var2, . . . varn ) ; variável Nome até 32 caracteres que armazenará o resultado do processamento da função. var1, var2, . . . varn Nome das variáveis numéricas que se deseja efetuar um somatório. OF Opcional, identifica um intervalo de variáveis. 15.4.2 - Função MEAN - Função que efetua uma média entre os valores de variáveis numéricas, para cada registro de dados. <variável> = MEAN ( [OF] var1, var2, . . ., varn ) ; variável Nome até 32 caracteres que armazenará o resultado do processamento da função. var1, var2, . . . varn Nome das variáveis numéricas que se deseja efetuar uma média. OF Opcional, identifica um intervalo de variáveis. 92 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 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 25.2 24.8 25.7 25.8 22.0 147 24.5000 18.5 17.4 18.9 18.9 20.5 20.8 115 19.1667 95 15.5.3 - Função TODAY - Função que retorna a data atual do ambiente de processamento. Não possui argumentos. <variável>=TODAY(); 15.5.4 - Função TIME - Função que retorna a hora atual do ambiente de processamento. Não possui argumentos. <variável>=TIME(); 15.5.5 - Funções: HOUR, MINUTE e SECOND - Funções que extraem de um valor tempo a hora, minuto e segundo respectivamente. <variável>=HOUR(tempo); <variável>=MINUTE(tempo); <variável>=SECOND(tempo); variável Nome até 32 caracteres que armazenará o resultado do processamento da função; tempo Valor que representa o tempo no formato SAS. 96 97 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 TITLE1 “Relatório de Idades”; PROC PRINT;RUN; Relatório de Idades IDADE_ IDADE_ Obs DIA MES ANO ANIV ANO DIA 1 10 11 1976 6158 29 8452 2 25 4 2000 14725 5 -115 3 14 8 1934 -9271 71 23881 4 8 1 1967 2564 39 12046 5 3 3 1955 -1765 51 16375
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved