apuntes.doc

17
UNIVERSIDAD AUTONOMA CHAPINGO MATERIA; NICROCOMPUTACÓN APUNTES DE SAS CATEDRATICO: DR. TEODORO GOMEZ HERNANDEZ PRESENTA: Ayala Oliva Lucio. 4º “1” Chapingo, México. Diciembre de 2008 “Enseñar la explotación de la tierra, DEPARTAMENTO DE FITOTECNIA

Upload: lucio-ayala-oliva

Post on 24-Apr-2015

12 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: APUNTES.doc

UNIVERSIDAD AUTONOMA CHAPINGO

MATERIA;

NICROCOMPUTACÓN

APUNTES DE SAS

CATEDRATICO:

DR. TEODORO GOMEZ HERNANDEZ

PRESENTA:

Ayala Oliva Lucio.

4º “1”

Chapingo, México. Diciembre de 2008

Chapingo, México. Noviembre del 2000

“Enseñar la explotación de la tierra,

no la del hombre”

DEPARTAMENTO DE

Page 2: APUNTES.doc

EL SISTEMA SAS.

El sistema SAS organiza datos en forma rectangular la fase DATA, (DATA= conjunto de datos o información). En un conjunto de datos cada hilera representa la información de una entidad individual y es llamada OBSERVACION.Cada COLUMNA representa el mismo tipo de información y es llamada variable

NOMBREE GRUPO CATEGORIA MATRICULA12345

Para construir un SAS DATA SET se usan instrucciones o declaraciones con un lenguaje de programación que en este caso es el lenguaje SAS. La fase DATA de SAS trabaja de la siguiente manera:

una fase de compilación en la que tiene dos periodos: la que compila.

Solo se “coteja” la información. La que crea.

Crea un buffer del INPUT.Crea un programa vector DATA.

la segunda fase es la de ejecución. Inicia con una instrucción DATA (cuenta de iteraciones).El programa DATA vector es el área de memoria donde SAS construye el DATA SET y lo hace con la lógica de una observación a la vez cuando el programa corre los valores de los datos que son leídos y puestos en el buffer del INPUTLa fase de DATA es una

REGLAS PARA LAS INSTRUCCIONES SAS. los enunciados SAS terminan con punto y coma (;) los enunciados SAS se pueden introducir en minúsculas, mayúsculas o

mezcladas en una misma línea pueden aparecer varias instrucciones SAS una instrucción SAS puede iniciar en una línea y termina en otra con la

condición de que no se divida una palabra una extensión SAS puede iniciar en cualquier columna las palabras se separan una de otra por al menos un espacio o por

caracteres especiales

REGLAS PARA NOMBRE SAS DE LOS DATA Y DE LAS VARIABLES un nombre puede contener máximo 8 caracteres el primer carácter debe ser una letra los siguientes caracteres pueden ser números letras o guion bajo no pueden aparecer espacios en blanco en los nombres SAS

Una fase PROC es la porción que inicia con una instrucción PROC (abreviatura de procedure) y termina con la instrucción RUN, con DATA o CON o con otra instrucción PROC, esta esta fase comprende:

1. Instrucción PROG

Page 3: APUNTES.doc

2. El nombre del procedimiento a usar.3. Nombre del conjunto d datos.

data titulo;input trat $ rend;cards; rastreo 1623 siembra 156 riego 458 preparacion 874 labranza 1036proc print;title 'experimento de siembra';run;

Experimento de siembra 1 16:26 Wednesday, December 8, 2008

Obs trat rend

1 rastreo 1623 2 siembra 156 3 riego 458 4 preparac 874 5 labranza 1036

Si se omite el DATA, SAS ocupa el DATA creado inmediatamente antes.

INSTRUCIONES ADICIONALES SOBRE LO QUE SE QUIERE HACER.

TITLE, el cual usar “” de hasta 132 caracteres y no debe llevar (;)La instrucción RUN le dice a SAS que todo el conjunto de instrucciones está listo

data titulo;input $ trat $ rend;cards; rastreo 1623 siembra 156 riego 458 preparacion 874 labranza 1036proc print;title "experimento de siembra"run;

SALIDAS PRODUCIDAS POR SAS

1. En la ventana “Log” se muestra las ordenes que se dieron para la ejecución del programa y cuando hay errores también son mostrados en esta ventana.

2. En la ventana “Out” o “Salida” se muestran los resultados de los procedimientos una vez que se han ejecutado.

3. El conjunto de datos que constituyen lo que denominamos el SAS DATA SET que constituye parte del programa donde se almacenan los datos y

Page 4: APUNTES.doc

la información descriptiva correspondiente. este conjunto no siempre se ve.

FORMA DE “CORRER” UN PROGRAMA SAS

En el programa editor se teclean todas las partes que componen el programa y una vez que está bien editado porque cumple con todas las reglas de sintaxis del lenguaje SAS la orden SUBMIT (f8) hace que se ejecute el programa y se envíe a la ventana de salida y a la ventana LOG la información de lo realizado.

En la ventana log permanecerán por default los registros de cada corrida mientras no se limpie con la orden CLEAR o Ctrl + E. RECORDAR QUE: en la línea de comandos con la palabra Keys o F9accedemos a la ventana donde están definidos los usos de las teclas.

DETALLES SOBRE LA INSTRUCCIÒN “INPUT”

Input se usa para instruir a SAS a cerca de como leer los datos y provee instrucciones que definen las variables mediante la indicación de sus atributos entre los cuales estarían los siguientes:

1. Nombre2. Tipo (SAS asume por default que son numéricos)3. Longitud (8bityes)4. Informante5. Formato

Las variables, además de numéricas, pueden ser del tipo alfanumérico en cuyo caso se indica con el signo”$” inmediatamente después del nombre de la variable (dejar un espacio)

Aun que la longitud es de 8bytes pueden tener otras dimensiones especificando con un informante o con un numero de columnas la longitud que se les asigna

COMO SE INDICA LA LOCALIZACION DE LOS DATOS

Hay tres lugares donde SAS puede leer los datos:

1. En la cadena del DATA después de la instrucción CARDS2. En un archivo del cual se especifica su ubicación mediante la instrucción

INFILE3. En un archivo SAS

La selección de la forma de disponer los datos para que SAS los lea depende de varios factores:

1. Si los datos están alineados en columnas u separados por algún espacio en blanco

Page 5: APUNTES.doc

2. Si las variables que son caracteres alfanuméricas contienen algún blanco

3. Si las variables que son numéricas contienen, por ejemplo comas (,)4. Si contienen fechas o tiempo5. Si hay más de una observación en cada línea6. Si una observación abarca más de una hilera

Lo anterior nos lleva a definir que hay tres formas o tipos básicos de disponer de los datos para que SAS los lea:

1. Entrada por lista2. Entrada por columna3. Entrada por formato

CARACTERISTICAS:

1. Entrada por Lista

Los capos deben estar separados por al menos un blanco Cada campo debe estar en el orden especificado en el INPUT Los datos perdidos o faltantes deben de representarse por un punto (.) Los caracteres no deben incluir un espacio en blanco La longitud de los valores es de 8, por lo que se trunca la escribirlo en el

programa VECTOR Los datos deben ser números o caracteres estándar

2. Entrada por Columna

Los valores pueden ser de hasta 200 caracteres Pueden contener blancos Los campos pueden leerse en cualquier orden Un dato perdido o faltante no requiere especificarse con un punto,

simplemente si en las columnas especificadas falta información el sistema lo considera como “Dato Perdido”

Si se quiere se puede omitir algunas de las columnas de los datos Campos o partes de los campos pueden ser releído

3. Entrada por Formato

Se usa para que el sistema pueda leer correctamente cuando los datos tienen caracteres especiales como la coma (ej. 10,458)

Para leer fechas como tales y no como caracteres o mezcla de letras y números se tiene que informar a SAS que se trata de fechas, las formas más comunes son:

DATE9. DDMMYY9. WEEKDATE29. “07OCT68”

data fofecha0;input pais $ 1-10 @16 salida date7. noche;

Page 6: APUNTES.doc

cards;japan 13may89 8grece 17oct89 12new zeland 03feb90 16brasil 28feb90 8venezuela 10nov89 9italy 25apr89 8russia 03jan89 14swisserlan 14jan90 9australia 24oct89 12irland 27may89 7proc print; run;

ASPECTOS IMPORTAMTES PARA LA ENTRADA CON FORMATO

1. El sistema lee la información hasta que terminan las columnas indicadas en el informante.

2. Se pueden leer datos que no están en forma estándar3. Se puede posicionar el apuntador del cursor para leer el siguiente valor.

Lo anterior nos permite entender que hay otras formas entradas de los datos que se puede denominar Entrada por Secuencia que se usa en el caso de tener más de una observación o renglón y para ello en el input se indica con @@; ejemplo SAS.

NOTA: Es importante no olvidar declarar con un punto cualquier observación perdida o faltante.

En caso de que se requiera más de un renglón porque nuestros datos rebasan las 80 columnas estándar de SAS, entonces en el input se declara con el símbolo # a demás de los nombres de las variables

CONTROL DE APUNTADORES DE COLUMNA

1.-Absoluto (@): direcciona el apuntador a la comuna que se le indique por ejemplo @17 lo mueve a la columna 17 en donde comenzara a leer otra variable declarada en el input.

2.- Relativo (+): instruye al apuntador a moverse n columna a la derecha antes de comenzar a leer el siguiente dato, ej: +6 mueve el apuntador 6 columnas a la derecha.

data apuntadr;input libro $ 15. +6 precio comma5.;cards; los cuentos 4 2455 matematicas 5 3256 don quijote 1 3000 proc print; format precio comma5.; /* si le queremos poner coma a la cantidad*/ title "controlador relativo"; run;

Page 7: APUNTES.doc

Otra forma de leer variables con más de 8 caracteres aun que se trate de una entrada por lista es utilizando el modificador de formato “:”; este modificador lo que hace es que le apuntador se brinque a donde empieza las siguiente variable indicada en el INPUT. Su uso hace que no importe que los datos estén bien o mal acomodados en columnas. Basta con indicar la mayor longitud de la variable, ejemplo:

Data libros;Input libro: $ 1-20. Precio;

Este formato de: es aceptado mientras la variable no incluya ningún espacio en blancoEste modificador no puede servir para leer en una entrada por lista en la que en alguna variable se tenga más de 8 caracteres. No olvidar que usamos el (.) como un indicado en seguida del número correspondiente a las columnas que le indicamos. Otra forma d decirle que lea variables que contienen espacios en blanco es utilizando el modificador Ampersand (& (shift+6)). Tiene como restricción el valor que sigue debe de estar separado por al menos 2 espacios en blanco.

Data amper;Input numero nombre & $ 25. Equipo p$ pesoini pesofin;

CALCULO DE VARIABLES NUMÉRICAS Y OPERADORES SAS.

Los operadores SAS son símbolos que hacen una comparación, una operación lógica o un cálculo aritmético SAS usa principalmente dos clases de operadores: de prefijo y de infijo. Operadores de infijo: se aplican a la variable constante, función (expresión) que le sigue inmediatamente, por ejemplo +y, -25, + (y*x), -cos (angle1).Orden de prioridad:Regla 1: expresiones entro de paréntesis se evalúan antes de las que están fuera del paréntesis por ejemplo: 18/3*2 es lo mismo 6*2=12 pero 18/(3*2) es igual a18/(6)=3.-(y**x)= -(x^2) en cambio –(x)**2= (-x)^2.Regla 2: hay un orden de prioridad dentro de diferentes grupos. Grupo 1

**+prefijo -prefijo^ NOT <> mínimum>< máximum

Grupo 2*/

Grupo 3+ infijo- infijo

Page 8: APUNTES.doc

Grupo 4 !! o || concatenación

Grupo 5 (operadores de comparación)= o E (igual a)^= o E (no igual a)> o GT (GREATER THAN)< o LT (LESS THAN)>= o GE <= o LE IN (IGUAL A UNO DE UNA LISTA)

Grupo 6& and

Grupo 7| o ! or

Regla 3: para operadores con la misma prioridad el operador a la izquierda se realiza primero.Excepciones:

1. En el grupo 1 que es el d más alta prioridad la operación de la derecha se ejecuta primero

2. Cuando dos operadores de comparación rodean a una cantidad la expresión es evaluada como si un and (&) estuviera presente 12<edad <20 (12< edad & edad<20)

Operadores aritméticos.***/+-

Note: If x<y then <=5;Else <=12;C=5*(x<y) +12*(x>=y);If x=6 & y=8 Obtener el valor de c.C=5.

data ama;input x y;c=5*(x<y)+12*(x>=y);cards;1 52 23 34 64 95 76 87 58 69 110 2proc print;run;Sistema SAS 13:08 Saturday, October 30, 2008 2

Page 9: APUNTES.doc

Obs x y c

1 1 5 5 2 2 2 12 3 3 3 12 4 4 6 5 5 4 9 5 6 5 7 5 7 6 8 5 8 7 5 12 9 8 6 12 10 9 1 12 11 10 2 12

El operador|| (concatenar) concatena variables de caracteres hay que considerar que si que si la nueva variable es mayor a 8 caracteres se tiene que definir su longitud, por ejemplo.Nombres apeidosP;NUENOM=length nuenom $ N°

Nombre ApellidpNuenomLENTGH nuenom $ 15

Nombre ApellidpNuenom = trim (nombre)!! !!trim (apellidp);LENTGH nuenom $ 15;

SUMA DE ACUMULADOS DE UNA VARIABLE

Sea que se tiene la variable llamada “A” y se requiere obtener los valores acumulados, para ello se echa mano de los siguientes procedimientos, ejemplo:

DATA acumula2;INPUT GRUPO ALUMNOS;acumula1+ALUMNOS;CARDS;1 342 363 384 39PROC PRINT;RUN;

La otra forma de obtener le acumulado es empleando la sentencia LAG, la función que hace es desplazar una hilera hacia abajo el o los dato que interesan, de modo que podemos utilizar LAG1, LAG2, LAGn dependiendo del número de observaciones que se tengan, y finalmente, generar un variable que podemos llamar total=”nombre de la variable de interés”+SUM (of x1..xn);

Hay instrucciones que permiten hacer un trabajo dentro de un ciclo, el cual debe determinar para lo cual s ele da la instrucción END, ejemplo DO, cada DO debe tener su correspondiente END en especial del uso imperativo de la instrucción

FORMAS ALTERNATIVAS PARA TOMAS SOLO UNAS VARIABLES

Page 10: APUNTES.doc

Anteriormente se vio el uso de la sentencia IF para hacer un subconjunto de una data determinado. Otra forma de formar subconjuntos es utilizando las instrucciones DROP y KEEP. KEEP conserva las variables enunciadas mientras que DROP “borra” las variables enunciadas. Ambas se pueden utilizar de dos maneras: 1) (DROP = variable(s)) o (KEEP=variable(s)) 2) DROP = variable(s) o KEEP=variable(s).

Es importante entender que hay una diferencia entre esta forma, en este caso el sistema lee todas las variables (DROP), pero escribe solo las no excluidas, en cambio utilizando la otra (KEEP) el sistema excluye las variables dichas y no las lee y solo escribe las que no se excluyen pero no las lee.

Una vez que se tiene archivos SAS se pueden conocer como están arreglados, es decir que variables tienen y todo los atributos de ellas, para eso se utiliza la instrucción PROC CONTENTS, la forma en que se utiliza es la siguiente PROC CONTENTS data =1.

Si la instrucción se pone de la siguiente manera; SHORT la salida proporciona solo los nombres d la variables, y si la instrucción es con la sentencia POSITION en la salida se obtiene la lista en orden alfabético y en orden por su posición o localización en el archivo. En resumen, esta instrucción ayuda a visualizarlos tipos que se asignan a cada variable y sus respectivos modificadores.

COMO UNIR DOS O MAS CONJUNTOS DE DATOS

Se presentan dos situaciones en las que se requiere unir dos o más archivos, el primer caso es cuando los diferentes archivos tienen las mismas variables y para lograrlo se utiliza la instrucción SET.

La otra situación es cuando se tienen diferentes variables pertenecientes a los mismos sujetos, para eso se utiliza la instrucción MERGE.

data uno;input a $ aa $ aaa $;cards; xx xy yy

xy yy xx yy xx xy

data dos;input b $ bb $ bbb $;cards; xx xy yy

xy yy xx yy xx xy

data union;merge uno dos;proc print;run;

Page 11: APUNTES.doc

Los PROC actúan sobre la data inmediata anterior.

LA INSTRUCCIÓN BY:

Esta instrucción se puede emplear para trabajar con sus datos agrupados la sintaxis en general es BY lista de variables;En el caso de su uso con la sentencia SORT la forma correcta de su uso seria:PROC SORT;BY lista de variables;data fila;input apepaterno $ apematerno $ nombre $ edad altura;cards; licona garcia juan 25 161

flores hernandez daniel 18 173 ayala oliva lucio 18 160 morales gervacio santiago 19 165 garcia davila fernando 20 173 garcia gutierrez roman 19 165 proc sort; by edad; proc print; run;

Sistema SAS 19:20 Thursday, November 18, 2008 4

Obs apepaterno apematerno nombre edad altura

1 flores hernande daniel 18 173 2 ayala oliva lucio 18 160 3 morales gervacio santiago 19 165 4 garcia gutierre roman 19 165 5 garcia davila fernando 20 173 6 licona garcia juan 25 161

Si se usa solamente en la instrucción SORT el ordenamiento ascendente pero se puede también agrupar en orden ascendente y en ese caso la instrucción es:PROC SORT; DESCENDING lista de variables;data fila;input apepaterno $ apematerno $ nombre $ edad altura;cards; licona garcia juan 25 161

flores hernandez daniel 18 173 ayala oliva lucio 18 160 morales gervacio santiago 19 165 garcia davila fernando 20 173 garcia gutierrez roman 19 165 proc sort; by descending altura; proc print; run;

Sistema SAS 19:20 Thursday, November 18, 2008 7

Obs apepaterno apematerno nombre edad altura

1 flores hernande daniel 18 173 2 garcia davila fernando 20 173 3 morales gervacio santiago 19 165 4 garcia gutierre roman 19 165 5 licona garcia juan 25 161

Page 12: APUNTES.doc

6 ayala oliva lucio 18 16

Un uso importante de SORT es el poder remover observaciones que están duplicadas y para ello tenemos dos formas de hacerlo:

1. La primera es de la siguiente manera:PROC SORT DATA= NOMBRE DEL DATA A ORDENAR NO DUPKEY;BY VARIABLE;‘TITLE ARCH NO DUPLICADO’;PROC PRINT;RUN;input apepaterno $ apematerno $ nombre $ edad altura;cards; licona garcia juan 25 161

garcia gutierrez roman 19 165 flores hernandez daniel 18 173 ayala oliva lucio 18 160 morales gervacio santiago 19 165 garcia davila fernando 20 173 garcia gutierrez roman 19 165

PROC SORT DATA=fila NODUPKEY; BY apematerno;TITLE 'ARCH NO DUPLICADO';PROC PRINT;RUN;

ARCH NO DUPLICADO 19:20 Thursday, November 18, 2008 10

Obs apepaterno apematerno nombre edad altura

1 garcia davila fernando 20 173 2 licona garcia juan 25 161 3 morales gervacio santiago 19 165 4 garcia gutierre roman 19 165 5 flores hernande daniel 18 173 6 ayala oliva lucio 18 160

2. La segunda opcion es:DATA NOMBRE DEL DATA;SET NOMBRE DEL DATA QUE TIENE LA INFORMACION;PROC SORT DATA=NOMBRE DEL ARCHIVO OUT=NOMBRE NUEVO NODUPLICATES;BY VARIABLE;PROC PRINT DATA=ESPECIFICAR ARCHIVO A IMPRIMIR;RUN;

Con PROC SORT se pueden generar datas que se usen directamente después para ello hay que generar una salida la cual tiene la siguiente estructura:PROC SORT DATA=UNO OUT= DOS; BY VARIABLE;PROC PRINT DATA=UNO;TITLE ‘NAME’;PROC PRINT DATA=DOS;TITLE ‘NAME2’;RUN;

PROC MEANSEste procedimiento produce estadísticos descriptivos de variables numéricas ya sea para toda la variable o para grupos de observaciones mediante la sentencia BY.

Page 13: APUNTES.doc

También se puede crear uno o más datas nuevos que contengan los estadísticos calculados.

OPCIONES QUE PUEDEN EMPLEARSE EN LA INSTRUCCIÓN PROC MEANS.

Data= nombre del dataEn este caso se pone el nombre del data a ser usado por el PROC MEANS; si se omite, entonces el último archivo o juego de datos creado es el que se emplea (se aplica a todos los proc’s).

NOPRINT. Le dice a MEANS que no imprima el estadístico por lo que se usa mas bien cuando el propósito del procedimiento es crear un nuevo data.MAXDEC=N. mediante estas instrucción se le dice el máximo numero de decimales que serán usados en la impresión de los resultados; varia entre 0 y 8.

ESTADISTICOS ESPECIFICOS QUE PUEDEN OBTENERSE

N. se refiere al número de observaciones en la que se basa el cálculo.NMISS. Es el número de valores perdidos.MEAN. Es la media.STD. Desviación estándar.MIN. El valor más bajo.MAX. El valor más alto.RANGE. El rango.SUM. La suma.VAR. La varianza.USS. La suma de cuadrados no corregida.CSS. Suma de cuadrados corregida.STDERR. El error estándar de la media.CV. El coeficiente de variación.T. Es le valor de la T de student para probar la hipótesis de que la media población es cero y otras.

SENTENCIAS USADAS CON EL PROC MEANS

BY nombres de las variables; esta sentencia se puede usar siempre y cuando previamente los datos sean ordenados por las variables deseadas.

VAR nombre de las variables; se calcularan los estadísticos para cada variable numérica listada en la sentencia VAR, si no se especifica una sentencia VAR todas la variables numéricas serán analizadas.

OUTPUT OUT= nombre del nuevo archivo option= lista de variables

Cuando esta sentencia se incluye PROC MEANS construirá un data con el nombre que se le indique por el parámetro OUT=a. los valores de malquiera de los estadísticos en listados bajo la sentencia PROC MEANS se pueden incluir en ese nuevo data. Para cada estadístico que se quiera se debe escribir su nombre (N, MEANS, STD, etc.)

Page 14: APUNTES.doc

Un signo (=) y una lista de los nombre de las nueva variables separados por un espacio en blanco.

El número de observaciones en el nuevo data corresponderá al número de grupos para los cuales se calculan los estadísticos.

PROC MEANS;VAR x1 x2;BY grupo;Output out=prueba1;MEAN= MA MB STD=SA