Sei sulla pagina 1di 12

Gua elaborada por: Lidia Vsquez

SESIN 2-2013
1. Estructuras de Decisin. Al momento de utilizar estructuras de decisin, es importante establecer cules son las condiciones que queremos que se cumplan. La estructura SI (IF) funciona bajo los parmetros de una decisin secuencial. Si un evento sucede entonces debemos de tomar uno u otro camino. Ejemplo: SI yo decido dar clases ENTONCES tengo que salir del trabajo temprano DE LO CONTRARIO puedo salir pasadas las siete de la noche. HASTA (DO & UNTIL) con esta estructura, buscamos la creacin de un ciclo, esta estructura nos permite establecer una condicin compactada. Ejemplo: Multiplica el nmero Y HASTA Y elevado a la 10ma potencia. PARA (FOR) tambin se puede utilizar la estructura ITERAR (LOOP) con esta estructura establecemos un condicin persistente. Ejemplo: PARA cada estudiante que copi se divide la nota mxima entre el nmero de estudiantes que copiaron. MIENTRAS (WHILE) esta estructura establece una condicin final a cumplir para poder parar el ciclo. Ejemplo: MIENTRAS la camioneta tenga gasolina, podrs seguir manejando. 2. Resolucin de un problema La empresa DIPMC S.A. de C.V. se dedica al procesamiento de Caf, dicha empresa posee un beneficio y dentro de este se poseen 4 Mdulos de procesamiento, esta empresa ha comprado un nuevo sistema que opera automticamente. Para que dicho sistema opere se requiere de un solo operador, este ser encargado de ingresar la cantidad de materia prima con la que se trabajara en un da especfico, esta se mide en quintales (QQ) lo cual es equivalente a 100 libras. Usted debe de programar el sistema para que opere bajo los siguientes parmetros: Con producciones menores a las 2000 QQ de recepcin durante el da y a su vez menores de 1000 QQ, solo se utiliza un mdulo, si la recepcin es mayor a los 3000 QQ se debe de operar con los cuatro mdulos. Los operarios del da por tener otras labores no pueden operar ms de dos mdulos a la vez; esta restriccin no aplica para los operarios nocturnos.

1. Data Sets Como vimos la clase pasada, un SAS data set contiene valores de datos que pueden ser procesados por el Software de SAS. Estos se dividen en dos tipos: Archivos de datos de SAS y Vistas de datos de SAS.

Gua elaborada por: Lidia Vsquez

a.

Estructura La figura siguiente muestra la estructura bsica de un SAS data set y sus componentes:

i. El descriptor de informacin contiene los atributos particulares del SAS data set y sus variables. Esto incluye: nmero de observaciones, longitud de las observaciones, fecha en que el data set fue modificado, y atributos particulares de las variables tales como: nombre, tipo, longitud, formato, etiqueta y si la variable tiene un ndice o no. ii. Los valores de datos siguen la siguiente estructura: 1. Variables Columnas 2. Observaciones Filas b. Data Sets Temporales y Permanentes. Un SAS data set temporal es aquel asignado a una librera temporal. Dicho tipo de data sets expirar una vez la sesin de SAS termine. Un SAS data set permanente es aquel asignado a una librera permanente, por lo que seguir existiendo una vez se termine la sesin de SAS. Los SAS data sets se nombran al momento de ser creados. Como lo vimos la clase pasada, el nombre de un SAS data sets cuenta de dos niveles: libref.SASdataset_name Cuando el SAS data set es temporal, puede constar de un solo nivel: SASdataset_name, ya que SAS, por default, asume que est asignado a la librera temporal WORK.. 2. Creacin de Data Sets introduciendo datos al Editor de SAS (Instream data) Para crear un SAS data set, podemos hacerlo directamente ingresndolos por medio de un paso de datos. La sintaxis a utilizar es la siguiente:
DATA SASdataset_name; INPUT nombre de variables separadas por espacio; DATALINES /*equivalente a usar CARDS;*/; DATOS........ ;; RUN;

Gua elaborada por: Lidia Vsquez Ejemplo 1: Datos Ingresos Mensuales (en millones de dlares) por Remesas en El Salvador 2012 (fuente: BCR)
DATA Remesas; INPUT date $ remesas; DATALINES; 12-Jan 267.3 12-Feb 314.8 12-Mar 364 12-Apr 332.2 12-May 348.3 12-Jun 318.2 12-Jul 330.4 12-Aug 315.5 12-Sep 302.7 12-Oct 329.8 12-Nov 299.3 12-Dec 388.5 ;; RUN; PROC PRINT data=remesas; RUN;

Notar lo siguiente: o El signo $ posterior al nombre de la variable date, le indica a SAS que considere a esta variable como de caracter. Por default, SAS toma las variables como de tipo numrico. En este caso, SAS no considera la variable dates con formato de fecha. o Los datos estn separados por una tabulacin. Es correcto tambin separarlos por un espacio. El procedimiento PRINT es utilizado para imprimir el SAS data set en nuestra ventana del output. Notar que, al igual que todos los procedimientos, este empieza por PROC y luego el nombre del procedimiento y finaliza con RUN. Ejemplo 2: Indicar a SAS posicin del valor de los valores de cada variable.
DATA Remesas2; INPUT date $ 1-6 remesas 7-11; CARDS; 12-Jan267.3 12-Feb314.8 12-Mar364 12-Apr332.2 12-May348.3 12-Jun318.2 12-Jul330.4 12-Aug315.5 12-Sep302.7 12-Oct329.8 12-Nov299.3 12-Dec388.5 ;; RUN; PROC PRINT data=remesas2; RUN;

En este caso, los valores de cada variable no estaban separados por un espacio o tabulacin. Por ello, le hemos indicado a SAS las posiciones que utilizan los valores de cada variable. Esto es til cuando la longitud de las variables es estndar.

Gua elaborada por: Lidia Vsquez Ejemplo 3: Indicar nmero de columnas a SAS
DATA Remesas3; INPUT date $ remesas @@; DATALINES; 12-Jan 267.3 12-Feb 314.8 12-Mar 364 12-Apr 332.2 12-May 348.3 12-Jun 318.2 12-Jul 330.4 12-Aug 315.5 12-Sep 302.7 12-Oct 329.8 12-Nov 299.3 12-Dec 388.5 ;; RUN; PROC PRINT data=remesas3 noobs/* opcin que previene que aparezcan el nmero de obs en el output*/; RUN;

En este caso, con el signo @ se le indica a SAS el nmero columnas en el que estn escritos nuestros datos. Dado que son 2 variables, cada 2 columnas SAS tomar el siguiente valor como parte de la variable date. OJO: Notar que todos los SAS data sets creados en los ejemplos anteriores son TEMPORALES. 3. Importacin de datos externos (.txt, .csv, .xls, .por, .sav, etc.) a. Uso de Paso de Datos Ejemplo 1: Leyendo un archivo separado por espacios
DATA individuos1; INFILE 'C:\Users\Lia\Dropbox\Estadstica I\TXT\individuos.txt' /*infile options*/ DLM=' ' /*dlm le indica a SAS cul es el delimitador del archivo*/ FIRSTOBS=2 /*le pide a SAS que empiece a leer desde la segunda fila. til cuando la primera fila consta de los nombres de las variables*/ MISSOVER /*Cuando SAS no encuentra el nmero de valores que concuerde con el nmero de variables, SAS sigue a la siguiente lnea. til cuando hay "missing values"*/; INPUT lote tipo folio viv r101 r103 r104 r106 area depto ingfa ingpe miemh gastohog aproba1 r403 ingneto; RUN; PROC CONTENTS DATA=individuos1; RUN;

El procedimiento CONTENTS genera un resumen de la informacin del SAS data set, incluyendo el nmero de observaciones, nmero de variables, fecha de creacin y ltima modificacin del archivo; as como, el listado de variables con sus respectivos formatos y etiquetas. Ejemplo 2: Leyendo un archivo separado por comas
FILENAME ind "C:\Users\Lia\Dropbox\Estadstica I\CSV\individuos.csv";

Gua elaborada por: Lidia Vsquez


DATA individuos2; INFILE ind DLM=',' FIRSTOBS=2; INPUT lote tipo folio viv r101 r103 r104 r106 area depto ingfa ingpe miemh gastohog aproba1 r403 ingneto; RUN; PROC CONTENTS DATA=individuos2 VARNUM /* opcin que ordena el listado de variables por orden en Data set en lugar de orden alfabtico*/; RUN;

Notar que en el primer ejemplo, introducimos la direccin del archivo (incluyendo el nombre del archivo y su extensin) directamente en el paso de datos. En el segundo ejemplo, se crea primero una referencia al nombre del archivo externo por medio de la sentencia filename, de tal forma que en el paso de datos se utiliza dicha referencia en lugar de escribir nuevamente toda la direccin. Esto ltimo es til cuando tengamos que referenciar al mismo archivo ms de una vez y para mejorar la legibilidad de nuestra programacin cuando las direcciones son muy largas. b. Uso de Procedimientos i. PROC CONVERT Este procedimiento convierte archivos de exportacin de BMDP, OSIRIS y SPSS a SAS data sets. La sintaxis es la siguiente:
proc convert programadeorigen=nombreref out=nombre_dataset; run;

Ejemplo: Conversin archivo extensin *.por (versin portable de SPSS)


FILENAME Sind "C:\Users\Lia\Dropbox\Estadstica I\SPSS\POR\individuos.por"; PROC CONVERT SPSS=Sind OUT=individuos3; RUN;

ii. PROC IMPORT Este procedimiento lee data de fuentes externas y las escribe en un SAS data set. Puede importar archivos delimitados (por espacios, comas, tabulaciones); as como bases de datos de MSExcel y de Access, entre otros. Ejemplo 1: Importacin de archivo de Excel
PROC IMPORT OUT= INDIVIDUOS4 DATAFILE= "C:\Users\Lia\Dropbox\Estadstica I\Excel files\individuos.xls" DBMS=EXCEL REPLACE; SHEET="sample"; GETNAMES=YES; RUN;

Ejemplo 2: Importacin de archivo *.sav (SPSS)

PROC IMPORT OUT= INDIVIDUOS5 DATAFILE= "C:\Users\Lia\Dropbox\Estadstica I\SPSS\SAV\in dividuos.sav" DBMS=SAV REPLACE; RUN;

SESIN 3 y 4-2013

Gua elaborada por: Lidia Vsquez

Reglas generales para nombrar en SAS: Un nombre debe tener 32 caracteres o menos de longitud. Los nombres deben empezar con una letra o un guion bajo. Los nombres solo pueden contener, letras, nmeros y guiones bajo. No se admiten caracteres especiales ($%&/). Los nombres no pueden contener espacios Los nombres pueden contener letras en mayscula y minscula. Con respecto a esta ltima regla, al nombrar variables en SAS, este recuerda cmo fue escrito la primera vez. A partir de ello, cada vez que este nombre sea impreso aparecer de la misma manera. Por lo anterior, se tiene que tener cuidado de cmo se desea que aparezca. 4. Reglas de Sintaxis a) Todos los comandos terminan en un punto y coma b) Las sentencias de SAS no distinguen entre maysculas y minsculas c) Los nombres de las variables se pueden escribir en maysculas y en minsculas d) Cuando se refiere a un archivo externo, s importan las maysculas y minsculas e) Se puede tener ms de un comando por lnea f) Las sentencias pueden continuar en la siguiente lnea, siempre y cuando no se parta una palabra 5. Variables. Tipos y sus atributos Las variables son contenedores que se crean para guardar y usar valores numricos y/o de carcter. Los tipos de variables son: a) Numrica: son guardados como nmeros de puntos flotantes. Incluyen fechas y tiempos b) Carcter: Contienen caracteres alfabticos, dgitos numricos del 0 al 9 y otros caracteres especiales Precisin numrica se refiere al grado de precisin con que las variables numricas son guardadas en el sistema operativo. Los atributos de las variables se pueden resumir en la siguiente tabla:

6. Missing Values o Valores Faltantes

Gua elaborada por: Lidia Vsquez Un valor faltante es aquel que indica que ningn valor de datos est guardado para la variable de una observacin especfica. Existen tres tipos de valores faltantes: a) Numricos. Se representa por un punto (.). b) De carcter. Se representa por un espacio (en el caso de tener un input de listado es necesario representarlo por un punto). c) Numricos especiales. Este es un tipo especial de valores faltantes que permite representar diferentes categoras de datos faltantes usando las letras de la A-Z y el guion bajo. Ejemplo de Missing Values numricos especiales: El curso de Introduccin a SAS del post grado de Mtodos Cuantitativos, cuenta con 5 alumnos. En las cinco clases que dura el curso, se le asigna a cada alumno una nota por participacin. Si un alumno falta a clase, ese da no se le asigna una nota de participacin. Si un alumno llega tarde, se le deja tomar la clase; sin embargo, tampoco se le asigna nota de participacin. Para el profesor, es importante distinguir entre las inasistencias y las llegadas tarde. Para ello se utiliza la siguiente programacin:
Data NotasMC; Missing I T; Input Alumno:$9. Nota1 Nota2 Nota3 Nota4 Nota5; Datalines; Alumno001 10 8 9 I 10 Alumno002 8 7 6 9 8 Alumno003 T 6 5 8 7 Alumno004 10 10 9 8 10 Alumno005 6 7 9 10 T ;; Run;

Observe la programacin. En clases pasadas aprendi a crear SAS data sets a partir de instream data Qu sentencias tiene esta programacin que son nuevas para ud? Con la sentencia Missing le establecemos a SAS los caracteres que pueden representar a los valores faltantes numricos. Cuidado! SAS no sabe qu significa I (inasistencia) o T (llegada tarde). Es el programador quien define las representaciones como ms le convenga. Vimos tambin, que la longitud (length) de una variable en SAS, por default, es de 8 bytes. En el caso de las variables de caracter, esto implica bsicamente una letra por byte. Para la variable Alumno, se tienen 9 letras, por lo que es necesario indicarle a SAS que la longitud de dicha variable debe ser mayor (9 bytes). De otra manera, los nombres de los alumnos se truncaran en su ltima letra. En esta gua se vern dos formas de hacerlo. a) Asignar un formato con la longitud deseada. Este es el caso de la programacin escrita arriba. Al incluir Alumno:$9. en la sentencia input, le estamos asignando un formato a la variable alumno. (Notar que los formatos deben terminar en un punto .) b) Otra forma de lograr el mismo resultado es utilizando la sentencia como se muest ra a continuacin:
Data NotasMC; Missing I T; Length Alumno $9; Input Alumno $ Nota1 Nota2 Nota3 Nota4 Nota5; Datalines; Alumno001 10 8 9 I 10 Alumno002 8 7 6 9 8 Alumno003 T 6 5 8 7 Alumno004 10 10 9 8 10 Alumno005 6 7 9 10 T ;; Run;

Para imprimir el reporte de notas usamos Proc Print:

Gua elaborada por: Lidia Vsquez

proc print data=NotasMc; title 'Notas SAS'; footnote1 'I significa inasistencia'; footnote2 'T significa llegada tarde'; run;

Observe que en la programacin se utiliz la sentencia title, footnote1 y footnote2. Con ellas, obtenemos el siguiente output:
Notas SAS

Obs Alumno 1 Alumno001 2 Alumno002 3 Alumno003 4 Alumno004 5 Alumno005

Nota1 Nota2 Nota3 Nota4 Nota5 10 8 T 10 6 8 7 6 10 7 9 6 5 9 9 I 9 8 8 10 10 8 7 10 T

I significa inasistencia T significa llegada tarde

Tanto los ttulos como los pies de pgina permanecen en todo el output que imprimamos a menos que los borremos. Para borrarlos se utiliza la siguiente programacin:
title; footnote1; footnote2;

7. Asignacin de Etiquetas La sentencia Label, en un paso de datos, asocia etiquetas descriptivas con variables. Para la mayora de los resultados de procedimientos, SAS imprime la etiqueta en lugar del nombre de la variable. Ejemplo:
data individuos1; set individuos; label r101 = 'Nmero de Orden' r103 = 'Parentesco con el JH' r104 = 'Sexo' r106 = 'Edad' ingfa = 'Ingreso Familiar' ingpe = 'Ingreso per cpita' miemh = 'Nmero de miembros del hogar' gastohog = 'Gasto del Hogar' aproba1 = 'Nmero de grados aprobados' r403 = 'Trabaj la ltima semana' ingneto = 'Ingreso neto' ; run;

Tambin, se puede utilizar la sentencia en un paso de datos en el que estemos importando un archivo externo. Ejemplo de esto sera:
data individuos;

Gua elaborada por: Lidia Vsquez


infile 'C:\Users\Administrator\Documents\individuos.csv' dlm=',' firstobs=2; input lote tipo folio viv r101 r103 r104 r106 area depto ingfa ingpe miemh gastohog aproba1 r403 ingneto; label r101 = 'Nmero de Orden' r103 = 'Parentesco con el JH' r104 = 'Sexo' r106 = 'Edad' ingfa = 'Ingreso Familiar' ingpe = 'Ingreso per cpita' miemh = 'Nmero de miembros del hogar' gastohog = 'Gasto del Hogar' aproba1 = 'Nmero de grados aprobados' r403 = 'Trabaj la ltima semana' ingneto = 'Ingreso neto' ; run;

Para visualizar las etiquetas creadas, ocupamos el output del proc contents:
proc contents data=individuos1 varnum; run;

8. Tablas de Frecuencia y Tablas cruzadas El procedimiento FREQ produce tablas de frecuencia y contingencia. En prximos cursos, veremos su utilidad para poder hacer pruebas de hiptesis de variables categricas. Con la siguiente programacin se genera una tabla de frecuencia de la variable r104 (sexo) y, con la opcin /plot=freq, se le solicita a SAS que genera un grfico de barras para las frecuencis y frecuencias acumuladas.
PROC FREQ data=individuos1; tables r104/ plot=freq; RUN;

El output se muestra a continuacin:


The SAS System The FREQ Procedure

Sexo R104 Frequency Percent Cumulative Cumulative Frequency Percent 46 46.00 46 46.00 1 2 54 54.00 100 100.00

Gua elaborada por: Lidia Vsquez

PROC FREQ data=individuos1; tables r104*aproba1; RUN;

En la esquina superior izquierda del output, se visualiza lo que significa cada una de los nmeros en cada recuadro (Frecuencia, Porcentaje, Porcentaje de Fila y Porcentaje de Columna). Es importante tener esto claro a la hora de interpretar las tablas de contingencia. En la ltima columna, se tienen los totales de las filas y en la ltima fila, el de las columnas. Notar que al final del cuadro establece las frecuencias faltantes, lo que implica que para 7 de las 100 observaciones no se cuenta con valores. Como ejemplo, se interpretarn los valores para las personas que tienen un grado de educacin aprobada y su sexo es 1 (masculino). De las 93 personas en la muestra, hay un hombre que tiene 1 grado aprobado de educacin. Este hombre representa el 1.08% del total (1/93). Este hombre con un solo grado aprobado, representa el 2.33% del total de hombres (1/43). Del total de personas que han aprobado un grado, los hombres representan el 20% (1/5)

SESIN 5 y 6-2013
1. Uso de una expresin en las sentencias If-Then y Else

Gua elaborada por: Lidia Vsquez SAS evala la expresin en un IF-THEN para producir un resultado diferente de cero, cero o missing. Un resultado diferente de cero y no-missing hace que la expresin sea verdadera; un resultado de cero o missing causa que la expresin sea falsa. Si la condicin especificada es verdadera, SAS ejecuta la sentencia para las observaciones que han sido ledas del SAS data set, para registros de un archivo externo, o de valores calculados. Si se utiliza la sentencia opcional ELSE da una accin alternativa cuando no es ejecutada la clusula THEN. La sentencia ELSE debe ser escrita inmediatamente despus de IF-THEN.
libname clase "E:\Sesin 2\Data sets"; proc contents data=clase.individuos_samp varnum; run;

Ejemplo:
proc freq data=clase.individuos_samp; tables r104 area r403; run;

Como podemos observar en las tablas de frecuencias, las variables r104 y r403, que corresponden a sexo y Ha trabajado la ltima semana del data sets individuos_samp, toman valores de 1 y 2. Por conveniencia, podramos necesitar que estas tomen valores de 0 y 1 de la siguiente manera: Variable R104 R403 Valor Actual 1 2 1 2 Valor deseado 1 0 1 0 Significado Masculino Femenino S trabaj la ltima semana No trabaj la ltima semana

Para ello, utilizamos IF-THEN ELSE dentro de un paso de datos de la siguiente manera:
data clase.individuos2011; set clase.individuos_samp; if r104=1 then r104=1; else r104=0; *Notar el uso de un if anidado para tomar en cuenta los missing values; if r403=1 then trab=1; else if r403=2 then r403=0; run;

Gua elaborada por: Lidia Vsquez Si no quisiramos modificar las variables originales, tambin es posible crear variables nuevas con los valores de 1y 0 basadas en las variables R104 y R403, de la siguiente manera creamos sexo y trab:
data clase.individuos2011; set clase.individuos_samp; if r104=1 then sexo=1; else sexo=0; if r403=1 then trab=1; else if r403=2 then trab=0; label sexo= 'Gnero masc=1' trab= 'Trabaj ltima semana =1'; run;

Potrebbero piacerti anche