Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porCarmen Hernández Velázquez Modificado hace 9 años
1
Copyright © 2006, SAS Institute Inc. All rights reserved. Techie Tips para mejorar tu código Arrays con SAS Marcel Almeida SAS BI Sr Consultant Pablo Fondevila Coordinador Comunidad SAS
2
Copyright © 2006, SAS Institute Inc. All rights reserved. Agenda Comunidad Analytics Cono Sur Conceptos Básicos Cuando los usamos? Ejemplos del Uso Ejercicio: Caso de Uso Real Links a bibliografía Sorteo: Libro Editorial SAS
3
Copyright © 2006, SAS Institute Inc. All rights reserved. Objetivos: Acelerar crecimiento profesional Promover el uso metódico e inteligente de información Registración: www.analyticsconosur.com Grupo “Programadores SAS”
4
Copyright © 2006, SAS Institute Inc. All rights reserved. Objetivos Taller Facilitar un espacio mensual (gratuito) de intercambio networking y profundización Acompañados de especialistas de dominio Hoy: “Uso de Arrays en SAS”
5
Copyright © 2006, SAS Institute Inc. All rights reserved. Ronda de Presentación y Expectativas Nombre Empresa Nivel de experiencia Inicial intermedio/avanzado Qué me espero llevar de este taller?
6
Copyright © 2006, SAS Institute Inc. All rights reserved. Que es un Array? La mayoría de los lenguajes de Programación tienen alguna notación para los valores relacionados con la repetición o otros valores relacionados. Esas estructuras son conocidas como matrices, vectores, dimensiones, tablas, o en lenguaje SAS, ARRAYS. La definición de SAS para ARRAYS es un conjunto de variables relacionadas que están definidos en un Data Step. Todos los elementos del ARRAY deben ser del mismo tipo siendo: CARÁCTERES o NUMÉRICOS.
7
Copyright © 2006, SAS Institute Inc. All rights reserved. Por qué necesitamos Arrays? El uso de ARRAYS puede ayudarnos a simplificar los procesos. Podemos utilizar ARRAYS para ayudar a leer y analizar datos repetitivos con un mínimo de codificación. Por ejemplo, supongamos que tenemos un archivo en el que cada registro contiene 24 valores con la temperatura para cada hora del día. Estas temperaturas están en grados Fahrenheit y tenemos que convertir a 24 valores de grados Celsius. Sin matrices tenemos que repetir el mismo cálculo para todas las 24 variables de temperatura:
8
Copyright © 2006, SAS Institute Inc. All rights reserved. Por qué necesitamos Arrays? Data Temperatura; InFile....; input....; celsius_temp1 = 5/9(temp1 – 32); celsius_temp2 = 5/9(temp2 – 32);... celsius_temp24 = 5/9(temp24 – 32); Run;
9
Copyright © 2006, SAS Institute Inc. All rights reserved. Por qué necesitamos Arrays? Una alternativa es definir los ARRAYS y el uso de un LOOP para procesar el cálculo para todas las variables: Data Temperatura; InFile...; InPut...; ARRAY temperature_array {24} temp1-temp24; ARRAY celsius_array {24} celsius_temp1-celsius_temp24; Do i = 1 To 24; celsius_array{i} = 5/9(temperature_array{i} – 32); End; Run;
10
Copyright © 2006, SAS Institute Inc. All rights reserved. Conceptos Básicos Las matrices de SAS son diferentes de las matrices en otros lenguajes. La diferencia de los ARRAYS de otras lenguajes y la de SAS es que los elementos no necesitan ser de la misma longitud. Matrices SAS son otra forma de agrupar temporariamente y referenciarse a las variables de SAS. Una matriz de SAS no es una nueva estructura de datos, el nombre de la matriz no es una variable, y las matrices no definen variables adicionales. Más bien, una matriz SAS proporciona un nombre para hacer referencia a un grupo de variables.
11
Copyright © 2006, SAS Institute Inc. All rights reserved. Conceptos Básicos ARRAY array-name {n} array-elements ; Las declaraciones ARRAY ofrecen la siguiente información acerca de la matriz SAS: array-name – Cualquier nombre valido SAS n – Numero de elementos del ARRAY $ - Indica si los elementos dentro de la matriz son variables de tipo de carácter length – Una longitud común para los elementos del array array-elements – Lista de variables de SAS para formar parte de la matriz initial-values – Proporciona los valores iniciales de cada uno de los elementos de la matriz
12
Copyright © 2006, SAS Institute Inc. All rights reserved. Tipos de Arrays Unidimensionales Multidimensionales Temporales
13
Copyright © 2006, SAS Institute Inc. All rights reserved. Tipos de Arrays Arrays Unidimensionales Un ARRAY simple puede ser creado cuando las variables agrupadas conceptualmente aparecen como una sola fila. Esto se conoce como una matriz unidimensional. Dentro del Program Data Vector (PDV) la estructura de variables se puede visualizar como: temperature_array Temperature Variables La sentencia para definir este ARRAY seria: array temperature_array {24} temp1 – temp24; La matriz cuenta con 24 elementos para las variables TEMP1 a TEMP24. Cuando los elementos de la matriz se usan en los Data Steps, el nombre de la matriz y el número del elemento ira referenciarlos. La referencia al noveno elemento en la matriz de temperatura es: temperature_array{9} {1}{2}{3}{4}{5}…{24} temp1Temp2temp3temp4temp5…temp24
14
Copyright © 2006, SAS Institute Inc. All rights reserved. Una matriz más compleja puede ser creada en forma de una matriz multidimensional. Matrices Multidimensionales pueden ser creadas en 2 o más dimensiones. Conceptualmente una matriz con 2 dimensiones se parece a una tabla con filas y columnas. Dentro del Program Data Vector (PDV) la estructura de variables se puede visualizar como : La sentencia para definir este ARRAY seria : array sale_array {2, 12} sales1-sales12 exp1-exp12; Tipos de Arrays Arrays MultiDimensionales 2nd Dimension SALE_ARRAY {r,1}{r,2}{r,3}{r,4}...{r,12} 1er Dimension Variables Ventas{1,c}SALES1SALES2SALES3SALES4...SALES12 Variables Costo{2,c}EXP1EXP2EXP3EXP4...EXP12
15
Copyright © 2006, SAS Institute Inc. All rights reserved. Un ARRAY temporal es una matriz que solo existe durante el Data Step donde se ha definido. Una matriz temporal es útil para almacenar valores constantes, que se utilizan en los cálculos. En una matriz temporal no hay variables correspondientes a identificar los elementos de la matriz. Los elementos son definidos por la palabra clave _TEMPORARY_. Cuando se utiliza la palabra clave _TEMPORARY_ una lista de elementos de datos temporal se crea en el Program Data Vector (PDV). Estos elementos sólo existen en el PDV y son similares a los pseudo-variables. La sentencia para definir este ARRAY seria: array rate {6} _temporary_ (0.05 0.08 0.12 0.20 0.27 0.35); Tipos de Arrays Arrays Temporales Array{1}{2}{3}{4}{5}{6} Variables Valores0.050.080.120.200.270.35
16
Copyright © 2006, SAS Institute Inc. All rights reserved. Estamos ahora en condiciones de aplicar los valores constantes que se han definidos en la matriz. Por ejemplo: cuando un cliente está en mora en el pago de sus cuentas, se aplica una sanción. El importe de la sanción depende del número de meses que la cuenta está en mora. Sin matriz este procesamiento IF-ELSE serían necesarios para completar el cálculo: if month_delinquent eq 1 then balance = balance + (balance * 0.05); else if month_delinquent eq 2 then balance = balance + (balance * 0.08); else if month_delinquent eq 3 then balance = balance + (balance * 0.12); else if month_delinquent eq 4 then balance = balance + (balance * 0.20); else if month_delinquent eq 5 then balance = balance + (balance * 0.27); else if month_delinquent eq 6 then balance = balance + (balance * 0.35); Tipos de Arrays Arrays Temporales
17
Copyright © 2006, SAS Institute Inc. All rights reserved. Al colocar la sanción a una matriz temporal, el código para calcular el nuevo valor puede ser simplificado. Las sanciónes han sido almacenados en la matriz temporal RATE. El nuevo saldo de la cuenta con la pena ahora puede ser calculado como: array rate {6} _temporary_ (0.05 0.08 0.12 0.20 0.27 0.35); if month_delinquent ge 1 and month_delinquent le 6 then balance = balance + (balance * rate{month_delinquent}); Tipos de Arrays Arrays Temporales Además de simplificar el código, el uso de la matriz temporal también mejora el tiempo de ejecución.
18
Copyright © 2006, SAS Institute Inc. All rights reserved. Cuándo los usamos? Tiene sentido utilizar matrices, cuando hay valores repetitivos que están relacionados y el programador necesita recorrer la mayoría de ellos. La combinación de arrays y loops en el paso de los datos es un increíble poder de la programación. El hecho de que las variables en la matriz no necesariamente están relacionadas o incluso contiguas hace aún más conveniente de utilizar.
19
Copyright © 2006, SAS Institute Inc. All rights reserved. Ejemplos del Uso Utilizando SAS para crear nombres de Variables array temp {4}; Este array crea las variables temp1, temp2, temp3 y temp4.
20
Copyright © 2006, SAS Institute Inc. All rights reserved. Ejemplos del Uso Utilizando SAS para crear nombres de Variables array temp{2:4}; Este ejemplo debería ser igual al anterior si 1 fuera el valor mas bajo, pero el array de este ejemplo empieza con 2, o sea, crea las variables temp2, temp3 y temp4.
21
Copyright © 2006, SAS Institute Inc. All rights reserved. Ejemplos del Uso Cálculos Repetitivos Este código es utilizado para calcular el bonos mensual de los empleados de una empresa X. array bonus {12} mes1-mes12; do j=1 to 12; bonus{j}=bonus{j}*.20; end;
22
Copyright © 2006, SAS Institute Inc. All rights reserved. Ejemplos del Uso Creando Variables con un Array Utilizando el código anterior vamos a crear una variable de bonos mensual. array bonus {12} mes1-mes12; array Percent{12}; do j=1 to 12; bonus{j}=bonus{j}*.20; Percent{j}=bonus{j}/5000; end;
23
Copyright © 2006, SAS Institute Inc. All rights reserved. Caso de Uso
24
Copyright © 2006, SAS Institute Inc. All rights reserved. Otros Tips _NUMERIC_ - Cuando todas las variables numéricas van a ser utilizadas como elementos del Array _CHARACTER_ - Cuando todas las variables carácter van a ser utilizadas como elementos del Array _ALL_ - Cuando todas variables del DataSet van a ser utilizadas como elementos del Array y las variables son del mismo tipo. DIM(ARRAY-NAME) – Tiene como retorno la cantidad de elementos de un Array
25
Copyright © 2006, SAS Institute Inc. All rights reserved. Links a Bibliografía http://support.sas.com http://www2.sas.com/proceedings/sugi26/p052-26.pdf http://www2.sas.com/proceedings/sugi26/p096-26.pdf http://www2.sas.com/proceedings/sugi26/p106-26.pdf http://www2.sas.com/proceedings/sugi27/p066-27.pdf http://www2.sas.com/proceedings/sugi27/p209-27.pdf
26
Copyright © 2006, SAS Institute Inc. All rights reserved. SORTEO!!!
27
Copyright © 2006, SAS Institute Inc. All rights reserved. Cierre de expectativas, próximos pasos Presentación y foro de discusión en www.analyticsconosur.com www.analyticsconosur.com Registrarse y unirse a grupo “Programadores SAS”
28
Copyright © 2006, SAS Institute Inc. All rights reserved. Cursos Programación Básico: 1 a 3 Septiembre Técnicas de Manipulación de Datos: 20 a 22 Septiembre Técnicas Avanzadas y Eficiencia: 26 a 28 Septiembre
29
Copyright © 2006, SAS Institute Inc. All rights reserved. Anexo Site: Analytics Cono Sur
30
Copyright © 2006, SAS Institute Inc. All rights reserved. Anexo
31
Copyright © 2006, SAS Institute Inc. All rights reserved.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.