
¡Hola! Bienvenido a éste curso. Para mi es muy importante que me conozcan antes de que tengan que escucharme durante un buen puñado de horas seguidas, así que ¡Voy a presentarme!
¿Como haremos esto? Bueno, trabajeremos con un modelo de tres (3) secciones: Lecciones, Prácticas y Evaluaciones. Cada una tan importante como la otra. ¡Espero que tengas tantas ganas como yo de comenzar!
Antes que nada, debemos configurar nuestro espacio de trabajo. Les explicaré como activar y configurar SAS OnDemand for Academics para así tener todo listo y poder comenzar con lo divertido.
Según sus siglas en inglés, SAS es un Software de Análisis Estadístico (Statistical Analysis Software), pero esa no es una respuesta muy atractiva que dar para cuando alguien te pregunte ¿Qué es SAS? Acá desarrollaremos más esa idea para que siembres más intereses en tu interlocutor.
Siempre es importante conocer donde está cada cosa antes de comenzar a trabajar. Aquí veremos que nos ofrece SAS Studio como ambiente de trabajo.
Muy bien, ahora finalmente vamos a la acción, usaremos nuestras primeras líneas de código para explicar sintaxis básica e imprimir el clásico “¡Hello World!”
Anexo enlaces a la documentación de lo que estaremos utilizando. No es obligada su lectura pero seguro les ayudará más adelante.
Anteriormente creamos variables a diestra y siniestra. ¿Funcionaron? Si, efectivamente, pero para poder hacerlo de la manera correcta hay que conocer cómo funcionan sus tipos, longitudes e incluso como se muestran cuando se encuentran vacías.
Los Datasets son los archivos de SAS donde se almacenará la data que trabajemos. Y como son así de importantes, también lo es que aprendamos como utilizarlos.
Trabajar con librerías es mucho más ordenado y seguro. Afirmo ésto último puesto que todo DataSet que no esté almacenado en una librería se pierde al terminar la sesión... Si, mejor veamos a que nos referimos con esto.
Lo prometido es deuda, y aquí les dejo como extra la explicación de las variables "tipo" fecha, aunque para hacerlo utilizo elementos que vamos a ver en modulos mas adelante, como el FORMAT, pero no se preocupen, en cualquier momento pueden volver a éste video.
La gran mayoría de las veces tenemos mas de un solo escenario y tenemos que validar para decidir si tomar una acción u otra. Para esto están las condicionales, y es lo que vamos a introducir en éste video.
Ya vimos la estructura básica de una condicional, pero no nos podemos quedar ahí. ¿Qué pasa cuando queremos validar varias cosas a la vez? ¿Cuándo se espera que algo cumpla con varias condiciones para que se valide? Bueno, ahí entran en juego los operadores lógicos.
¿Realizar una tarea una y otra vez? Vamos a poner eso en un ciclo y olvidemosnos. Así puede ejecutar 500 veces un mismo comando con solo tres líneas de código.
Ya que sabemos que es un ciclo y cómo hacer que se repita una cantidad determinada de veces, ¿Qué sucede cuando no sabemos cuántas veces necesitamos que se ejecute? Para eso entran en juego el UNTIL y el WHILE, vamos a conocerlos y saber cuándo utilizar uno u otro.
Cuando tengamos una gran cantidad de variables es muy útil que podamos referirnos a varias de una sola vez, allí entran en acción los ARRAYS. Vamos a ver de qué tratan y cómo podemos construirlos y utilizarlos.
Vamos a indagar un poco más en los arrays, busquemos y comparemos sus valores dentro de un ciclo.
Ya que sabemos cómo utilizar los arrays en un ciclo, exploremos otras opciones más... cortas. ¡OF e IN!
¿En los últimos ejercicios se han dado cuenta que es común que nos queden en el dataset más variables de las que necesitamos? Eso es muy molesto si lo que realmente queremos ver son 3 o 4 y tenemos como 50. Bueno, aquí entran en escena el KEEP y el DROP.
Ya aprendimos a eliminar las variables sobrantes, pero ahora vamos mas allá y estudiemos como obtener solo la data que necesitamos.
Antes de continuar, necesito enseñarles a importar archivos externos para poder comenzar a trabajar con DataSets más grandes y robustos. ¡Vamos con eso!
En programación, una función es un segmento de programa referido con un nombre propio y que realiza tareas predeterminadas y retorna un valor resultado. Pero vamos a ir un poco mas allá y explicarlo de la manera en la que estamos acostumbrados.
Para trabajar con las funciones numéricas va a ser necesario poder crear data sets enteros de números, ¿No? Bueno, vamos a hacerlo de una vez con una función. Les presento RAND.
Ya con un DATASET entero lleno de números aleatorios podemos ponernos hacer varias pruebas. Vamos a comenzar con un poco de matemática.
Avanzamos un poco más y vemos las funciones necesarias para el análisis más básico a un DATASET basado en cifras, la estadística descriptiva.
¿Recuerdan lo que les dije de que las operaciones matemáticas dan problemas con los MISSING? Bueno, para estar enterado de que tan “incompleta” está tu data y que puedes o no puedes hacer, existen dos funciones, N y NMISS.
Y llegamos a los strings, las variables de texto. Y ¿Qué mejor manera de comenzar con ellas que hablando de uno de nuestro peores enemigos en éste ámbito? Los espacios en blanco.
Otro problema típico para la comparación de variables de texto, y también su presentación, es el uso de las mayúsculas, y vamos a resolverlo justo ahora.
Ya vimos anteriormente como concatenar textos, ¿Cierto? Con barras verticales, pero ahora aprendamos a hacerlo correctamente con funciones.
Ahora que ya sabemos unir texto, ¡También debemos aprender a separarlo! Lo cual va a ser muy importante en el trabajo del día a día.
Antes fue sencillo extraer valores de la cadena de texto, puesto que sabíamos específicamente en que posición se encontraba cada cosa, pero ¿Qué pasa si no?
Otra cosa que puede hacer SAS sin problemas es reemplazar valores por otros, cosa que nos puede ser de utilidad para varios escenarios.
A veces la data cruda no es lo que queremos mostrarle al usuario final, a veces hay que adornarla un poco, y no por alteración, si no por comprensión. Allí entran a trabajar los formatos.
Aunque ya dije que los formatos son como una etiqueta que se le va a pegar encima al dato a la hora de mostrarlo, también podemos hacer que el dato se convierta en el formato, o crear otra variable con ese valor… Eso lo logramos al usar la función PUT.
Para comenzar, tenemos que aprender a crear una fecha, vamos con DATE y TODAY.
Ya aprendimos como crear una fecha desde cero... Y ahora, ¿Que pasa si tenemos sus elementos pero separados? ¿O si por alguna razón deseamos separarlos nosotros? Vamos a ver eso.
Cerrando las funciones de fecha, ahora vamos a ver las que pueden ser las mas importantes para ver la facilidad con la que SAS nos deje trabajar con ellas. Calculemos intervalos con las funciones INTCK y INTNX.
¿Saben que es muy válido? Que al obtener e importar una data de millones de registros con cientos de variables puedas sentirte un poco perdido al momento de realizar análisis, es normal. Para recuperar ese control SAS tiene las siguientes funciones.
Volviendo un poco a lo que vimos en el vídeo de cómo simplificar el recorrido de los array, nos encontramos con 4 funciones que nos ayudaran a buscar en su contenido (y el de las listas).
¿Recuerdan cuando le hablaba que en SAS existían dos equipos? Ahora vamos a hablar del segundo, PROC STEPs.
Como es debido, ¡Nuestro primero PROC nos servirá para introducirnos en ésto y para generar nuestro primer reporte en PDF! Vamos con PROC PRINT.
Entonces, ¿Qué otras cosas puede hacer un PROC? Bueno, vamos a por uno que realiza una tarea esencial… ordenar la data.
Si, ya vimos como funciona PROC SORT, pero éste también puede hacer algo igual o incluso mas importante que ordenar… puede lidiar con los duplicados.
Ya sabemos ordenar y eliminar duplicados. Pero, ¿Qué es lo que es lo primero que deberíamos hacer realmente al obtener un nuevo DATASET? Bueno, conocer su estructura sería de bastante ayuda.
Seguro mucho de ustedes intentaron filtrar los valores que aparecían como vacíos en el análisis de frecuencia, pero con un simple WHERE = ‘ ‘ no les aparecía. Bueno, esto normalmente debería funcionar, solo que el DATA SOURCE con el que se construyó el DATASET al parecer se encuentra con un formato incorrecto. ¿Cómo nos damos cuenta? ¿Podemos solucionarlo?
Ok, ya que utilizamos el PROC FREQ, vamos a ver que mas podemos hacer con el. Vamos a ver si podemos determinar, por ejemplo, cuantas películas tiene cada actor y de una vez utilizar el PROC MEANS para ver que información nos puede dar la duración de las películas.
Aunque el PROC MEANS es increíblemente útil, hay que saber lo que estamos buscando. Mientras tanto, con PROC UNIVARIATE podemos obtener un montón de información con una sola instrucción.
La transposición sirve para observar la data de otra manera, para evitar tener DATASETS gigantes y simplificar análisis. Vamos a probarlo.
Ahora vamos a la parte que todos quería llegar, comencemos a diseñar un reporte.
Ok, el tema de las gráficas y los reportes es tan extenso que daría para otro curso entero, pero… Vamos a ver lo suficiente como para que puedan hacer reportes presentables en su día a día.
Viendo el resultado del vídeo anterior sentimos que el falta algo más. Esos montos no se ven muy bien que digamos… Vamos a volver a los formatos. Pero esta vez para crear los nuestros propios.
¡Ahora si! Vamos a hacer una práctica completa de todo lo que hemos aprendido en la sección.
Como muchos estaban esperando, comenzamos la sección de SQL pero primero... ¿Qué es SQL?
El SELECT funciona para indicar que columnas deseamos extraer de la data. Veamoslo.
Al igual que con los DATASET, podemos filtrar la data con el comando WHERE. ¿Como lo hacemos en el PROC SQL? Vamos a verlo.
Igual que el PROC SORT, pero acá lo trabajamos en la misma consulta. Vamos a verlo con detalle.
Muchas veces vamos a necesitar agrupar. ¿Para qué? Para poder utilizar funciones como SUM, COUNT, etc. Vamos a verlo.
Vimos que no podemos filtrar por las variables producto de una agrupación... Bueno, no podemos con el WHERE, pero el HAVING es otra historia.
Ya vimos todas las clausulas de un SQL, pero tan importante como saber en que orden escribirlas al programar, también es importante saber el orden en el que se ejecutan en el sistema, ésto ayudará mucho al momento de crear nuestras propias consultas.
Durante los últimos vídeos hemos mencionado un par de veces "Bases de Datos relaciones", pero ¿Qué son? Vamos a verlo.
Ahora que sabemos que en una estructura relacional tenemos varias tablas, tenemos que aprender a unirlas para obtener información. Trabajemos nuestro primero JOIN.
Ya hicimos nuestro primer JOIN, ahora tenemos que aprender sobre los distintos tipos de JOIN, especialmente el LEFT JOIN.
Ya conociendo el INNER y el LEFT, vamos a ver otro tipo de JOIN, los SET OPERATOR
Aunque no es mi forma favorita de unir tablas, el como hacerlo en un Data Step es tema de examen de certificación, así que... Vamos con MERGE.
Y finalmente, ¿Qué son Macros? Bueno, las macros es eso que usamos cuando queremos escribir un programa que escriba programas... Veámoslo mejor.
Con Macro Variables se puede hacer de todo, desde sustituir un valor a una línea de comando entera. Vamos a conocer a sus nuevas mejores amigas.
Es importante saber que podemos utilizar las macro variables en infinidades de contextos, y para esto es necesario saber que pueden concatenarse a prácticamente todo. Veámoslo.
Ya practicamos y comprendimos como utilizar las macro variables, ahora viene algo incluso mas útil... Macro Programas.
Tal cual como en un programa de SAS normal, en los macro programas se pueden crear lógicas complejas, empecemos por las ya super conocidas condicionales.
Como lo acabamos de ver con el PROC SQL, ¿Podemos hacerlo con DATA STEPS dentro de los macro programas? Si, si podemos, vamos a verlo.
Ya que sabemos construir macro programas que ejecutan rutinas enteras, ¿Podemos hacer algo que sirva como una función? Si, claro que podemos.
Lo mejor de los macro programas es la capacidad de construir rutinas enteras que se ejecuten dependiendo de la información que contenga un DATASET, algo extremadamente útil cuando deseas automatizar procesos.
Como lo dije en el primer modulo, vamos a ver un ejemplo funcional haciendo uso de todo lo que hemos aprendido. Vamos con eso.
Pues hasta aquí llegamos con el contenido planificado. Muchísimas gracias a todos por elegir Domina SAS Programming Ya! para acompañarlos por este camino de aprendizaje de esta maravillosa herramienta.
Esto no es un adiós, es solo un hasta luego. Ya saben que pueden escribirme en cualquier momento para resolver dudas e, incluso, para proponer temas nuevos si lo desean.
¡Nos vemos!
"Domina SAS Programming YA!" es un curso simple pero eficiente. Por medio de videos teóricos, prácticos y muchos pero muchos ejercicios, lograrás dominar ésta herramienta en un dos por tres. Acá te enseñaré conocimientos básicos y no tan básicos, desde instalar la versión gratuita de SAS hasta contenido del examen de certificación oficial.
Estudiaremos el cómo utilizar la versión gratuita de SAS (SAS University) para luego ver conceptos básicos como lo son los tipos de variables, las librerías y los DataSet. Acto seguido construiremos nuestros primeros Data Step, revisando condicionales, loops, arrays y técnicas varias de subsetting hasta llegar a importar data de archivos externos. También enlistaremos las funciones por su tipo y haremos uso de cada una de ellas para luego incursionar en los tan útiles PROCedures que realizan acciones desde ordenar los Dataset hasta ayudarnos con la impresión de complejos reportes en pdf junto con sus gráficas y tablas. Finalmente, repasaremos los conceptos básicos de SQL y los implementaremos en SAS junto con el PROC SQL y terminaremos con broche de oro haciendo uso del tan útil Macro lenguaje y Macro variables para simplificar y automatizar rutinas complejas.
¿Estas emocionado con la descripción? Te prometo que el contenido es mucho mejor.
¡Aventúrate a dominar SAS Programming YA!