Está en la página 1de 115

ISBN 978-607-425-104-3

INSTITUTO NACIONAL DE INVESTIGACIONES FORESTALES, AGRÍCOLAS Y PECUARIAS


CENTRO DE INVESTIGACIÓN REGIONAL GOLFO CENTRO
CAMPO EXPERIMENTAL LA POSTA

O S
T
DA
DE 
J O ®
N E AS
MA O S
AL AND
Ó N IZ
C I IL
U C UT
O D
T R
IN

Dra. Teresa Beatriz García Peniche


Dr. Isaías López Guerrero
DIRECTORIO INSTITUCIONAL

SECRETARÍA DE AGRICULTURA, GANADERÍA, DESARROLLO RURAL, PESCA Y


ALIMENTACIÓN

Ing. Alberto Cárdenas Jiménez


Secretario

Ing. Francisco López Tostado


Subsecretario de Agricultura

Ing. Antonio Ruiz García


Subsecretario de Desarrollo Rural

Lic. Jeffrey Max Jones Jones


Subsecretario de Fomento a los Agronegocios

INSTITUTO NACIONAL DE INVESTIGACIONES FORESTALES, AGRÍCOLAS Y


PECUARIAS

Dr. Pedro Brajcich Gallegos


Director General

Dr. Enrique Astengo López


Coordinador de Planeación y Desarrollo

Dr. Salvador Fernández Rivera


Coordinador de Investigación, Innovación y Vinculación

Lic. Marcial A. García Morteo


Coordinador de Administración y Sistemas

CENTRO DE INVESTIGACIÓN REGIONAL GOLFO CENTRO

Dr. Vicente E. Vega Murillo


Director Regional

Dr. Sergio Uribe Gómez


Director de Investigación

Dr. Francisco Javier Ibarra Pérez


Director de Planeación y Desarrollo

C.P. Velia Martínez Castillo


Directora de Administración

Dr. Raúl Ríos Sánchez


Director de Coordinación y Vinculación en Puebla

M.C. Oscar G. Castañeda Martínez


Director de Coordinación y Vinculación en Tabasco

Introducción al manejo de datos, utilizando SAS ®


CONTENIDO
Pág.

CAPÍTULO 1
¿Por qué SAS®? .............................................................................................1

CAPÍTULO 2
Las ventanas de SAS® ...................................................................................3

CAPÍTULO 3
Archivos permanentes en SAS® ................................................................. 11

CAPÍTULO 4
Archivos temporales en SAS® .................................................................... 15
Para hacer comentarios.................................................................................. 16
Enhanced Editor ............................................................................................. 16
Creación de una base de datos en SAS® ...................................................... 17
Mensajes del “Log” ......................................................................................... 18
Cambiando de archivos temporales a permanentes....................................... 20
Ver la base de datos ....................................................................................... 21
Guardar los códigos........................................................................................ 22
Tamaño de las bases de datos guardadas en SAS® ..................................... 24
Acceso a los códigos guardados ....................................................................24

CAPÍTULO 5
Los programas de SAS®.............................................................................. 25
Acerca de los comentarios................................................................... 25
Recomendación ................................................................................... 27
Procedimientos y órdenes (o instrucciones) de SAS®......................... 28
Manejo de los resultados ..................................................................... 28

CAPÍTULO 6
La base de datos........................................................................................... 31
1. Importar bases de datos de Excel® ................................................. 32
2. Exportar bases de datos de SAS® hacia Excel® ............................ 39
3. Otras formar de importar o exportar (sin Wizard)............................. 43

Introducción al manejo de datos, utilizando SAS ®


CAPÍTULO 7
Más acerca de lectura de datos por SAS® ................................................. 47
1. Creando un archivo de datos con la orden DATA............................ 47
2. Leyendo datos con señalador de columna ...................................... 49
3. Leyendo datos escritos de corrido ................................................... 50
4. Leyendo datos de archivos ASCII.................................................... 51
Infile........................................................................................... 52
Filename ................................................................................... 52
5. Para saltar información que SAS® no debe leer.............................. 53

CAPÍTULO 8.
Algunos procedimientos de SAS®.............................................................. 55
1. Para ordenar los datos................................................................................ 55
Proc sort .............................................................................................. 55
Para eliminar datos repetidos .............................................................. 56
2. Para verificar la calidad de los datos y/o resumir información
de los datos crudos..................................................................................... 56
Proc freq .............................................................................................. 56
Proc means.......................................................................................... 58
3. Para manejar la base de datos ................................................................... 61
Drop ..................................................................................................... 61
Keep .................................................................................................... 62
Rename ............................................................................................... 62
4. Para crear variables por medio de operaciones matemáticas .................... 63
5. Para unir dos o más bases de datos .......................................................... 65
Set ....................................................................................................... 65
Merge................................................................................................... 66
Otro uso de Merge ............................................................................... 68

CAPÍTULO 9
Más de manejo de datos en SAS® .............................................................. 71
Los condicionantes ......................................................................................... 71
If…then ................................................................................................ 71
Else if…then......................................................................................... 73
If…and/or….then.................................................................................. 74
Algunas funciones de SAS®........................................................................... 74
Fechas ................................................................................................. 74
Mes, año .............................................................................................. 75
Máximos, mínimos y sumatorias.......................................................... 76
Sumatoria ............................................................................................ 76

Introducción al manejo de datos, utilizando SAS ®


Máximos .............................................................................................. 76
Mínimos ............................................................................................... 77
Recomendaciones finales............................................................................... 77

CAPÍTULO 10.
Algunos códigos de estadística.................................................................. 79
Proc glm ......................................................................................................... 80
Proc mixed...................................................................................................... 84
Proc univariate ............................................................................................... 84
Prog reg.......................................................................................................... 89
Para seleccionar el modelo de regresión múltiple más adecuado.................. 92
Proc corr ......................................................................................................... 93
Proc glm para análisis de varianza multivariado............................................. 94
Otras ordenes básicas.................................................................................... 95
“Where” en proc means ....................................................................... 95
Proc boxplot ......................................................................................... 95
Prueba de Chi-cuadrada en proc freq.................................................. 95

CAPÍTULO 11
Algunos códigos de diseños experimentales............................................ 97
1. Diseño completamente al azar ................................................................... 97
2. Comparación de tratamientos..................................................................... 98
3. Comparaciones múltiples ........................................................................... 99
4. Diseño de bloques completos al azar ......................................................... 99
5. Diseño de bloques al azar generalizados ................................................. 100
6. Diseño de bloques incompletos, incluyendo el diseño de bloques
completos al azar con observaciones perdidas ........................................ 100
7. Diseño de cuadro latino ............................................................................ 101
8. Diseño de cuadro latino con repeticiones ................................................. 101
9. Diseño de parcelas divididas (ejemplos) .................................................. 101

APÉNDICE ................................................................................................... 104

LITERATURA CITADA ................................................................................ 105

RECONOCIMIENTO

CRÉDITOS EDITORIALES

DIRECTORIO INSTITUCIONAL

Introducción al manejo de datos, utilizando SAS ®


ÍNDICE DE FIGURAS

Pág.

Figura 1 Ambiente de trabajo de SAS® como aparece al abrir el


programa (después de oprimir el icono con el logotipo de
SAS®). 5
Figura 2 Menú que se abre al oprimir la opción “View” del menú
principal. 8
Figura 3 Ventana que se abre al oprimir el icono de creación de
archivero nuevo (el dibujo del archivero amarillo con una
estrella azul). 11
Figura 4 Ejemplo de código con datos escritos directamente (o
copiados de algún editor de textos) en el “Editor” de SAS®. 18
Figura 5 Contenido del “Log” después de ejecutar el código del
ejemplo. 19
Figura 6 Archivo temporal que se encuentra dentro del archivero
“Work” 21
Figura 7 Los datos abiertos del archivo “Ejemplo” que se encuentra
dentro del archivero “WORK”. 22
Figura 8 Menú que se abre para guardar un código antes de cerrar la
sesión de SAS®. 23
Figura 9 Pantalla para dar nombre al código de SAS® que se desee
guardar. 23
Figura 10 Archivo de datos de Excel® editado para ser exportado a
SAS®. 33
Figura 11 Utilización del Wizard para importar datos hacia SAS®. 35
Figura 12 Selección del programa de donde se van a importar datos a
SAS® 35
Figura 13 Búsqueda de la localización del archivo a importar. 36
Figura 14 Selección del archivo a importar. 36
Figura 15 Aceptar el archivo seleccionado. 37
Figura 16 Selección del archivero donde se va a guardar el archivo a
importar. 37
Figura 17 Mensaje que aparece en el “Log” después de una importación
exitosa. 38
Figura 18 Verificando que los datos se hayan importado correctamente. 39

Introducción al manejo de datos, utilizando SAS ®


Figura 19 Selección de la opción de “exportar” en el Wizard. 40
Figura 20 Utilización del Wizard para exportar datos de SAS®. 41
Figura 21 Buscando el lugar donde se van a guardar los datos a
exportar. 42
Figura 22 Dándole nombre al archivo a exportar. 42
Figura 23 Ejemplo de como de ven los datos de un archivo. 45
Figura 24 Ejemplo de la orden “merge”. 68

ÍNDICE DE CUADROS

Pág.

Cuadro 1 Algunas opciones de “Means” con el procedimiento glm. 3


Cuadro 2 Algunas opciones a usar con el procedimiento Univariate. 89
Cuadro 3 Algunas opciones de la instrucción Plot en el procedimiento
Reg. 90
Cuadro 4 Algunas opciones que se utilizan con el procedimiento Corr. 94

Introducción al manejo de datos, utilizando SAS ®


CAPÍTULO 1

¿Por qué SAS®?

En sus inicios, el programa SAS® llevaba ese nombre por ser las siglas de
“Statistical Analysis System” (“Sistema de Análisis Estadísticos”). Sin embargo,
actualmente SAS® incluye toda una familia de programas, por ejemplo, para análisis
financieros y para manejo de datos sociales (entre muchos otros), y SAS/STAT es
sólo uno más entre sus múltiples funciones, de manera que el nombre “SAS” es
ahora sólo un nombre, sin que tenga un significado específico. El presente manual se
refiere a algunas funciones básicas de SAS/STAT, con mayor probabilidad de
utilizarse en investigación en las ciencias agropecuarias.

SAS® es el paquete estadístico de más prestigio, y se encuentra entre los más


poderosos instrumentos de manejo y análisis de datos en el mundo. El programa
SAS® es distribuido en más de 120 países para aproximadamente 3.5 millones de
usuarios. Este programa no puede comprarse, sólo se adquieren licencias de uso.
Sin embargo, una vez que se adquiere una licencia, se pagan cuotas anuales que
dan derecho a que automáticamente se tenga acceso a las novedades, adiciones o
mejoras en el programa. Estas cuotas sirven, en gran parte, para financiar la
investigación que mejora los programas. Los usuarios pueden opinar en qué ámbito
requieren o preferirían modificaciones a los programas, si contactan ballot@sas.com.
También es posible enviar sugerencias al correo suggest@sas.com. El Instituto SAS
tiene su sede en Carolina del Norte, Estados Unidos. Su página, www.sas.com debe
consultarse para adquirir licencias.

El presente manual está dirigido a quienes deseen iniciarse en el uso de SAS®,


especialmente para quienes trabajan en ciencia biológicas y agropecuarias, y
manejen datos de investigación. No se incluyen temas intermedios ni avanzados,

Introducción al manejo de datos, utilizando SAS ®


1
sino se trata de que los lectores se familiaricen con el ambiente Windows de SAS®, y
de que tengan a la mano un listado de códigos básicos y sencillos en lenguaje SAS®
para manejar cualquier cantidad de datos, ya sea para análisis directo en SAS®, o
para uso posterior de algún otro paquete de análisis especializado, por ejemplo, el
ASREML (programa que se utiliza en análisis de genética cuantitativa). Los
programas especializados suelen estar escritos en lenguaje Fortran, C, o C++. Sin
embargo, típicamente, la capacidad de combinar o crear variables a partir de otras
variables, o la capacidad de editar los datos, es decir, el manejo de los datos, es muy
limitado en estos programas. Por esta razón, es conveniente preparar los datos
primero usando un programa más amigable, como SAS®.

Con frecuencia, a las órdenes que se escriben para que SAS ejecute un
procedimiento, se les llama “programas” o “códigos” (la palabra que se utilizará con
más frecuencia será “código”). Hay varias maneras de obtener un mismo resultado
usando SAS®, pero en general, se mencionará una sola forma, para que sirva más
como una guía que como una fuente de confusión.

Se incluyen algunos códigos de procedimientos estadísticos básicos. Su buen uso


tiene como prerrequisito tener las bases suficientes de estadística para cada caso, o
consultar a alguien versado en el tema.

Esta obra dista mucho de ser un manual completo de SAS®. Existen literalmente
cientos de libros, y aún más sitios en Internet dedicados al uso de este poderoso
programa. Sin embargo, esperamos que el contenido del escrito sea de utilidad a
todos los lectores.

Introducción al manejo de datos, utilizando SAS ®


2
CAPÍTULO 2

Las ventanas de SAS®

Una vez adquirida la licencia, usted tendrá, ya sea un enlace para bajar el programa,
o un número variable de CDs que contienen el programa de SAS®, dependiendo de
la versión, y del tipo de licencia que haya adquirido. La más básica, generalmente, es
suficiente para trabajar en todo lo relacionado con la investigación en ciencias
biológicas, agropecuarias y forestales. Uno de los CDs vendrá marcado como el
apropiado para iniciar la instalación. Sólo hay que introducirlo en la PC y seguir los
pasos que se vayan indicando.

El SAS® es un programa grande que requiere al menos de Windows 98, con mínimo
de 10 GB de capacidad en disco duro y RAM de 512, de manera que en cualquier
computadora actualmente puede instalarse el programa SAS®. Se debe tomar en
cuenta que la instalación puede tardar varios minutos. Una de las opciones de
instalación es el idioma en que se desea trabajar en SAS®. Sin embargo, sin
importar que idioma se elija, todas las instrucciones que se escriban para SAS® y la
mayoría de la información que se obtiene de la ventana del “Log” deben y van a estar
en inglés. Por lo anterior, y también para traducir ciertas opciones, el contenido de
esta obra hará referencia a la versión en inglés del programa.

Una vez instalado el SAS®, en su computadora aparece un icono con el logotipo de


la versión de SAS® que se haya instalado, ya sea en el contenido de la
computadora, o en el escritorio de la pantalla. Este icono sirve como atajo (“shortcut”)
para inicializar el programa. En algunas versiones, basta un “clic” en el “shortcut”
para que el programa abra, y en otras versiones, se necesita el doble clic. En caso
de que se abran dos ventanas, cada una con el programa de SAS®, se puede
trabajar con los dos programas al mismo tiempo, pero esto puede ocasionar que la

Introducción al manejo de datos, utilizando SAS ®


3
computadora se bloquee, y se pierdan ambos trabajos. Además, a menos que se
esté trabajando con varias decenas de millones de datos, o que se estén realizando
miles de iteraciones (repeticiones de un procedimiento), el SAS® es un programa
muy rápido, y se perdería más tiempo maximizando y minimizando una ventana u
otra de SAS®, que utilizando una sola, por lo cual es preferible cerrar la ventana que
no se vaya a utilizar.

Al abrir SAS®, se pueden ver varias ventanas y un menú (Figura 1). Las ventanas
más importantes son la del contenido, la del “Editor” (o “Enhanced Editor”), la del
“Log”, y la del “Output”; esta última, detrás de las dos anteriores. En algunas
versiones, al abrir SAS® aparece una ventana que ofrece tutorías en el uso del
programa, en diversos niveles de complejidad a escoger. El usuario puede decidir
abrir la ventana y aprovechar estas lecciones o cerrar la ventana e iniciar
directamente con el trabajo en SAS®. El ambiente de SAS®, es decir, todo el
conjunto de ventanas, puede encontrarse ya maximizado, o estar minimizado, al
momento de iniciar la sesión. En la esquina extremo derecha se encuentran los
símbolos para cerrar, minimizar y para maximizar el programa. Si se oprime el de
cerrar, el programa pregunta: “Are you sure you want to end the SAS session?”
(“¿Está usted seguro de que quiere cerrar la sesión de SAS?”). Si se oprime “Yes”
(“sí”), entonces, le preguntará, en inglés, si quiere guardar los cambios, y después de
guardarlos, o de que se le indique que no se desea guardar nada, sólo entonces, se
cierra el programa.

Las ventanas son:

a) La ventana del “Explorer” que se encuentra, al abrir SAS®, a la izquierda, en


forma vertical, e incluye el “Contenido del Ambiente SAS®”, el cual, a su vez,
contiene “Libraries” (la biblioteca), que es en donde se guardan los archiveros
generados por y para SAS®. En las versiones más avanzadas, el “Contenido del
Ambiente SAS®” también incluye: File shortcuts, Favorite folders, y Mi PC, que es
de donde pueden provenir bases de datos que se importen hacia SAS® para
trabajar con ellos.

Introducción al manejo de datos, utilizando SAS ®


4
Dentro de Libraries se encuentra, por default, el archivero llamado “WORK”
(“trabajo”). Este archivero no debe borrase, porque es en donde se guardan en
forma automática los archivos de trabajo que no son permanentes. Es decir, una
vez que se cierra la sesión de SAS®, todos los archivos que hayan sido
guardados en “WORK” se borrarán.

Figura 1. Ambiente de trabajo de SAS® tal como aparece al abrir el programa (después
de oprimir el icono con el logotipo de SAS®). La ventana de “Log” es en donde se
encuentran las letras azules. La ventana del “Editor” se encuentra debajo de la del
“Log”, y la ventana del “Output” está detrás de las dos anteriores.

Otro archivero ya incluido se llama “SASUSER” (“usuario de SAS”) y puede


usarse para guardar archivos permanentes, sin que el usuario tenga que crear un
archivero nuevo (Ver Capítulo 3, acerca de creación de archiveros).

Introducción al manejo de datos, utilizando SAS ®


5
El usuario también puede crear sus propios archiveros, utilizando los nombres
que desee. En “libraries” aparecerán todos los archiveros que el usuario haya
creado para trabajar en SAS®, además de SASUSER y WORK.

b) La ventana del “Log” (ver Figura 1), que se encuentra arriba al abrir SAS®, tiene
información del copyright, de a quien pertenece la licencia de ese programa en
particular, y detalles del uso de los recursos de la computadora en el programa
SAS®.

Una vez trabajando, en “Log” van a aparecer los reportes del resultado del
programa o código, incluyendo una copia del código usado, el número de
observaciones leídas, los errores, si los hubiese, algunas veces con sus
correspondientes sugerencias de corrección, y el tiempo utilizado en la ejecución
del programa. En esta ventana también aparece la advertencia cuando la licencia
de SAS está a punto de vencerse, y alerta de que después de la expiración, no se
podrá utilizar el programa.

En resumen, el “Log” contiene: la versión de SAS® en uso, a quien pertenece la


licencia, la plataforma de ejecución, el código usado, con cada línea numerada, el
nombre del archivo leído y su ubicación. Si el programa no corrió (no se ejecutó),
aparecen los errores o advertencias (con algunas advertencias el programa corre
de todas maneras), y sugerencias para corregir el código. Si el código corre,
aparecerán el número de observaciones leídas y el nombre del archivo creado.
Las letras son azules cuando todo corre normalmente, rojas, si el programa no se
ejecutó por errores graves del código, y de otro color, si hubo algún problema que
el programa superó solo.

c) La ventana del “Editor” (es la ventana de abajo), es donde se escriben los códigos
y programas o se dan las instrucciones que se requiere sean ejecutadas. En las
últimas versiones de SAS ®, que es a las que se refiere esta obra, el que se abre
por default es el “Enhanced Editor”, que es una versión mejorada del “Editor”. Es
muy útil porque las instrucciones o códigos que se escriben van en colores

Introducción al manejo de datos, utilizando SAS ®


6
diferentes, según sean palabras exclusivas de SAS® (por ejemplo “DATA” o
“PROC”), o las palabras con que se identifican las variables o los nombres de
archivo. También vienen en diferentes colores los números, y las palabras de uso
exclusivo de SAS® que fueron mal escritas.

Puede haber más de una ventana del “Editor” abierta, cada una conteniendo
diferentes códigos. Para hacer que un código específico se ejecute, primero de
marca o sombrea el código utilizando el botón izquierdo del ratón, y luego
oprimiendo el icono de orden de correr (el icono de “Run”, como veremos). Si por
alguna razón, se cerrase(n) la(s) ventana(s) del “Editor” (o del “Enhanced Editor”),
y se deseara reabrirla(s), hay que hacer clic en “View” (una opción en el menú), y
seleccionar “Enhanced Editor”.

d) La ventana del “Output” se encuentra por default detrás de las de “Log” y del
“Editor” mientras no haya resultados que mostrar. Cuando se corre un programa
que genere resultados al “Output”, este se coloca por delante del “Log” y del
“Editor automáticamente. En esta ventana aparecen los resultados que se pueden
“imprimir”. Esto no significa que de esta ventana sea posible imprimir
directamente, sino que son resultados que aparecen, es decir, son impresos en
forma virtual. Hay muchos resultados que no necesariamente aparecen en el
“Output”, aunque muchos de ellos pueden solicitarse mediante un código. La
manera que se sugiere aquí para imprimir los resultados a papel, es copiar el
contenido del “Output”, pegarlo en Word®, efectuar las ediciones necesarias; por
ejemplo, cambiar color y tipo de letra, o cualquier otra edición que se desee, y
finalmente, imprimir.

En ambiente Windows, las ventanas horizontales (es decir, todas, excepto la del
ambiente de SAS®) pueden arrastrarse y moverse con el Mouse, y todas las
ventanas pueden abrirse o cerrarse, pero antes de cerrar la última ventana de
SAS®, el programa pregunta si quieres cerrar la sesión. Al menos una ventana
debe permanecer abierta para continuar con el programa SAS® en ejecución.

Introducción al manejo de datos, utilizando SAS ®


7
También existe una ventana de “Results” (Resultados) debajo de la ventana del
“Explorer”, minimizada en el momento de abrir SAS®. Esta ventana sirve como
una tabla de contenido de los resultados que vayan saliendo en el “Output”. Si se
oprime alguno de los resultados, esa porción aparece visible en el “Output”.

Del menú principal, que es una lista de ocho palabras (File, Edit, View, Tools,
Run, Solutions, Window, Help) que se encuentra horizontalmente al extremo
izquierdo de la pantalla de SAS, quiero resaltar el uso de “View”. Si se oprime
“View”, se abre el menú con el cual se pueden acceder todas las ventanas de
SAS, como se observa en la Figura 2, y si se selecciona “Contents only”, aparece
el contenido de “Libraries”, los archiveros.

Figura 2. Menú que se abre al oprimir la opción “View” del menú principal.

Introducción al manejo de datos, utilizando SAS ®


8
Debajo del menú hay una ventana para escribir instrucciones y junto a ésta, dibujos
de enlace; para elegir las instrucciones se oprime la tecla “enter” sobre ellos. Por lo
tanto, existen tres formas de dar órdenes a SAS: Por medio de menús
desplegables (File, Edit, View, Tools, etc), por medio de los dibujos (lo
recomendado aquí), y escribiendo instrucciones en la ventanita de comando (no
recomendable, pues es fácil equivocarse). También se puede oprimir el botón
derecho del ratón y elegir entre alguna de las opciones que aparezcan.

Escribir instrucciones u oprimir los dibujos da los mismos resultados, por lo que se
recomienda utilizar los dibujos. Los dibujos del menú son prácticamente iguales a los
de los programas de Microsoft “Word®” ó “Excel®”, etc. Incluyen, entre otros:
1. Documento nuevo
2. Abrir archivos
3. Guardar archivos
3. Imprimir
4. Copiar
5. Cortar
6. Pegar

Todos éstos son muy útiles para guardar o modificar códigos, pero no se van a
discutir aquí, pues es obvio su uso, como en el editor de textos Word®.

Exclusivos de SAS® son los comandos de ejecutar o correr programa (“Run”), crear
un archivo nuevo, ver la ventana del “Explorer”, y ayuda de SAS®. El usuario deberá
explorar poco a poco todas estas opciones. Sólo algunas de ellas, las más
esenciales, se tratarán aquí.

Introducción al manejo de datos, utilizando SAS ®


9
Introducción al manejo de datos, utilizando SAS ®
10
CAPÍTULO 3

Archivos permanentes en SAS ®

Para tener un lugar específico donde guardar las bases de datos permanentes para
utilizarse en SAS®, se utiliza el comando de creación de archiveros, cuyo dibujo de
enlace es un archivero amarillo con una estrella azul arriba. Al oprimir este enlace, se
abre una ventana o pantalla como la que se muestra en la Figura 3.

Figura 3. Ventana que se abre al oprimir el icono de creación de archivero nuevo (el
dibujo del archivero amarillo con una estrella azul).

Introducción al manejo de datos, utilizando SAS ®


11
Antes de utilizar la opción de crear un archivero nuevo es necesario tener
perfectamente localizado el lugar dentro de la PC donde se encuentre. Para este
propósito:

1. Crear un “Nuevo Fólder” o carpeta en algún lugar de la PC, del cual no se


mueva. Puede ser en el escritorio, en “Mis documentos” o en cualquier otro
lugar. Otra opción es seleccionar un “fólder” o carpeta ya existente, pero que
dentro del cual se desee guardar las bases de datos permanentes que se
tengan o que vayan generando con SAS®.

2. A este fólder póngale un nombre sencillo, corto, de ocho ó menos dígitos.


Se pueden combinar letras y números, e incluir guiones bajos, si se desea, pero
no se pueden utilizar otros símbolos ni guiones, y el nombre debe de empezar
con una letra o con un guión bajo (no con número). Se recomienda un nombre
corto hecho únicamente de letras.

3. Cerrar el fólder si estaba abierto, así como cualquier base de datos que
contenga.

Hecho lo anterior, se procede en la forma siguiente:

1. Abrir SAS® y oprimir el dibujo de creación de archivero nuevo (el dibujo del
archivero amarillo, con su estrella azul), va a salir una pantalla como en la
Figura 3.

2. En la primera ventanita “Name” (nombre), escribir el nombre del fólder


recién creado o el fólder designado para contener los datos para trabajar en
SAS®.

3. La segunda ventanita, dejar “Default”.

4. Marcar el espacio en la ventanita “Enable at startup” (hacer disponible


desde el inicio).

5. Debajo de “Library information”, en “Path” (camino), oprimir “Browse”


(examinar) y encontrar el camino para llegar al fólder designado; por ejemplo,

Introducción al manejo de datos, utilizando SAS ®


12
podría estar en: Mis documentos, y la carpeta llamarse “Datos”, al seguir el
enlace, automáticamente se escribiría: C:\Documents and Settings\Yo\Mis
documentos\Datos

Lo anterior también es posible escribirlo directamente. Una vez definido este


camino, SAS® va a buscar la información en ese lugar únicamente; por eso, si
se mueve el fólder de lugar, SAS® no lo va a poder encontrar.

6. No escribir nada en “Options”

7. Oprimir “Ok”

8. Verificar que dentro de “Libraries” (Dentro de la ventana vertical a la


izquierda, en SAS®, ahora se encuentre un archivero llamado “Datos”. Si
Libraries no está abierto, oprimir “View”, y después “Contents only”.

Si no se desea tener bases de datos (a veces también le llamaremos archivos)


permanentes en SAS®, sino que se desea importar los datos de otro programa,
como Excel® por ejemplo, o escribir los datos para analizarse, no es necesario crear
archiveros. SAS® puede trabajar con datos temporales. Sin embargo, los archivos
guardados en SAS® con frecuencia son mucho más compactos que en hojas de
cálculo o archivos de texto. Si el espacio fuese una limitante en memoria, guardar los
datos en SAS® economiza espacio y es muy fácil de usar.

Introducción al manejo de datos, utilizando SAS ®


13
Introducción al manejo de datos, utilizando SAS ®
14
CAPÍTULO 4

Archivos temporales en SAS®

En la ventana del “Enhanced Editor” (simplemente lo llamaremos “Editor”), se


escriben los códigos de programa para trabajar con una base de datos que:
a) se encuentre en un archivero permanente de SAS®;

b) se vaya a formar al escribir directamente los datos, o bien,

c) se encuentre fuera de los archiveros de SAS®, es decir, en alguna carpeta


de la PC, en un CD, o en un dispositivo extraíble, por ejemplo.

En este capítulo vamos a ver como crear una base de datos, en este caso, temporal
(la opción “b” de la lista anterior). Una ligera modificación al código, indicándole a
SAS® donde guardar los datos (un archivero diferente de “WORK”), da la orden de
convertir la base de datos a permanente.

Los archiveros que se crean como se describió en el capítulo anterior, sirven para
guardar las bases de datos en forma “permanente” (aunque tanto los archivos como
los archiveros se pueden borrar en el momento que se desee, con “Delete”). Sin
embargo, con frecuencia la base de datos es pequeña y no se requiere guardarla en
SAS®. Es posible que ya se encuentre en algún otro programa, en Excel®, por
ejemplo, y que no se desee tener la información repetida, o que sea preciso
actualizar la información periódicamente, lo cual quizá resulte más fácil hacer en
Excel® que en SAS®. En SAS® no se puede modificar directamente la información
en las bases de datos; es decir, si en una celda se encuentra el número “3.001”, por
ejemplo, y el número está mal, no se puede llegar a ese número en particular con el
cursor, ni mediante algún otro artificio, y modificarlo directamente. Se puede, sin

Introducción al manejo de datos, utilizando SAS ®


15
embargo, modificar toda la columna y hacer operaciones o buscar el dato erróneo,
siempre y cuando haya forma de determinar su posición y el dato sea único.

Si en el menú (la línea que contiene las palabras: File, Edit, View, Tools, Run, etc.)
se oprime “View” y después se selecciona “Contents only”, aparece a la izquierda (si
no es que ya estaba ahí mismo, pues por default al abrir SAS® aparece esta ventana
vertical) el dibujo de un archivero amarillo (Libraries). Si se oprime este enlace
aparecen los archiveros que se tienen. SAS® incluye dos archiveros: “SASUSER” y
“WORK”. Nos ocuparemos únicamente del archivero “WORK”. En “WORK” se
guardan todas las bases de datos a las cuales no se les haya indicado en que
archivero van. Mientras esté en proceso la sesión de SAS ®, las bases de datos
están disponibles y pueden ser vistas al abrir el archivero “WORK” (sólo se da clic en
“WORK”, y después en la base de datos que se desee ver).

Para hacer comentarios

Es muy útil añadir comentarios de lo que estamos haciendo. La forma correcta de


hacerlo es escribir un código y junto a él, debajo o antes de él, hacer un comentario.
Si se escribe:

/ comentario / o  comentario;

El comentario o cualquier otra cosa que se escriba entre los “/ /” ó “ ;” no va a ser
leído por SAS®. Incluso pueden escribirse códigos a usar bajo condiciones diferentes
del análisis actual, que no se van a leer si se ponen entre los / / o ;. Aquí siempre
se va a utilizar la forma  comentario; para las notas o comentarios.

Enhanced Editor

Cuando empezamos a escribir el código en el “Enhanced Editor” (que, como ya se


dijo, aquí llamaremos simplemente “Editor”) lo primero que notamos es que las letras
tienen colores: Los comandos de SAS®, como DATA, INPUT, CARDS y RUN están
en azul. De hecho, DATA y RUN, están en azul obscuro, e INPUT y CARDS, en azul

Introducción al manejo de datos, utilizando SAS ®


16
claro. Las palabras o datos que nosotros utilizamos, están en negro. El comentario
(lo escrito dentro de ;) está en verde. Si aparece alguna palabra en rojo, significa
que hay algún problema y que el programa no va a correr.

Para este ejemplo se va a crear una base de datos. Se debe escribir todo lo que
sigue exactamente como aparece aquí, en la ventana del “Editor”. O se puede
escribir en Word® y después copiar a la ventana del “Editor”.

No importan lo espacios antes ó después de cada comando, ni si se escribe todo


seguido o se pasa a la siguiente línea. Sin embargo, se recomienda poner cada
“frase” en una línea, para que el código sea fácilmente legible.

Creación de una base de datos en SAS®

Ejemplo de código para crear una base de datos escrita en SAS® (Figura 4):

DATA ejemplo;
INPUT rana tam salto;
CARDS;
1 1 16
2 2 18
3 3 17
4 1 12
5 2 17
6 3 21
7 1 15
8 2 16
9 3 17
;
 tamaño 1= chico, tamaño 2 = mediano, tamaño 3 = grande;
Run;

Introducción al manejo de datos, utilizando SAS ®


17
Para que el código corra, hay que oprimir el icono de ejecutar programa (“Run”),
representado por el dibujo de la silueta de una persona corriendo.

Figura 4. Ejemplo de código con datos escritos directamente (o copiados de algún


editor de textos) en el “Editor” de SAS®.

Mensajes del “Log”

En este caso, se observa que aparece un mensaje en la ventana del “Log”, como
puede verse en la Figura 5 (la ventana del “Log” se hizo un poco más grande
utilizando el ratón, para que se vea todo el contenido, para propósitos de este
ejemplo); el contenido del “Log” se reproduce a continuación, para facilitar su lectura:

79 DATA ejemplo;
80 INPUT rana tam salto;
81
82 *tamaño 1= chico, tamaño 2 = mediano, tamaño 3 = grande;

Introducción al manejo de datos, utilizando SAS ®


18
83
84 CARDS;

NOTE: The data set WORK.EJEMPLO has 9 observations and 3 variables.


NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
94 ;
95
96 *tamaño 1= chico, tamaño 2 = mediano, tamaño 3 = grande;
97 Run;

Figura 5. Contenido del “Log” después de ejecutar el código del ejemplo.

Se observa que:

1) las líneas están numeradas, en este caso, la numeración empieza del 79


porque había instrucciones anteriores que fueron borradas;

Introducción al manejo de datos, utilizando SAS ®


19
2) el código se repite, incluyendo el comentario, pero no los datos;

3) las “Notas”, que es el reporte de la ejecución del programa por parte de


SAS® están en azul… buena noticia, porque si algo sale en rojo, significa que el
código estaba mal escrito o que por alguna razón, no se pudo correr el
programa, o corrió mal;

4) se menciona una base de datos llamada “work.ejemplo”, dando detalles del


número de observaciones (hileras) y del número de variables (columnas); y

5) se dan detalles del tiempo de ejecución y a veces otros detalles técnicos.

Cambiando de archivos temporales a permanentes

El nombre de la base de datos “work.ejemplo”, significa que en el archivero “WORK”,


existe una base de datos llamada “ejemplo” (Figura 6). Como se mencionó antes,
todo el contenido del archivero “WORK” se borrará tan pronto termine la sesión de
SAS®. A continuación se indica la modificación al código para que la base de datos
se guarde como permanente: En lugar de sólo poner el nombre de la base de datos
(“ejemplo”), le ponemos el nombre del archivero donde queremos que se
guarde……y que NO sea en “WORK”. Digamos que el archivero se llama “Ranas”, y
que lo creamos anteriormente, siguiendo los pasos del Capítulo 3.

El código se modifica para que quede así (sólo se muestra el principio):

DATA ranas.ejemplo;
INPUT rana tam salto;
CARDS;
1 1 16
2 2 18
etc.

Para ver la base de datos o archivo (Figura 6), primero se abre la ventana de
“Libraries” (si la ventana del “SAS Environment” se encuentra cerrada, el proceso es
oprimir “View”, y después “Contents Only”, para que se abra “Libraries”) y se hace

Introducción al manejo de datos, utilizando SAS ®


20
clic en el archivero “WORK”, en el caso del primer código, y/o en el archivero
“Ranas”, en el caso del segundo código, y en cualquiera de los dos casos, se
observa que contiene la base de datos llamada “Ejemplo”.

Figura 6. Archivo temporal que se encuentra dentro del archivero “WORK”.

Ver la base de datos

Para ver los datos del archivo, se hace clic sobre el mismo (Figuras 6 y 7). Se
pueden tener abiertas simultáneamente dos o más bases de datos, pero es preciso
cerrarlas antes de que se ejecute un código. Es preferible abrir las bases de datos
una por una, e irlas cerrando después de verlas, para no olvidar cerrar alguna antes
de dar la instrucción de “Run”.

Introducción al manejo de datos, utilizando SAS ®


21
Siempre es aconsejable ver como quedó la base de datos para verificar que resultó
lo que queríamos que sucediera. Los programas de cómputo, al menos hasta el
momento de escribir esto, hacen siempre lo que se les indica, que a veces no es lo
que el programador quería.

Figura 7. Los datos abiertos del archivo “Ejemplo” que se encuentra dentro del
archivero “WORK”.

Guardar los códigos

Para guardar el código (todo lo que escribimos; en este ejemplo, desde DATA hasta
RUN;) se deber abrir el menú “File”, y seleccionar “Save As” (Figura 8). Luego se le
da un nombre al código y se elige la carpeta donde queramos que se guarde (Figura
9), o bien, se puede crear una carpeta, tal como se hace en el programa Word®.

Introducción al manejo de datos, utilizando SAS ®


22
Figura 8. Menú que se abre para guardar un código antes de cerrar la sesión de SAS®.

Figura 9. Pantalla para dar nombre al código de SAS® que se desee guardar.

Introducción al manejo de datos, utilizando SAS ®


23
En todo caso, antes de cerrar SAS®, sale un cuadro con la pregunta (en inglés, para
las versiones que nos ocupan) equivalente a: “¿Desea guardar lo que está escrito en
el Editor?” Si respondemos que sí (seleccionando y haciendo “clic” en “YES”), van
saliendo las opciones anteriormente descritas, y que se muestran para el ejemplo de
las ranas en las Figuras 8 y 9.

Tamaño de las bases de datos guardadas en SAS®

Prácticamente no hay límite para el tamaño de las bases de datos que se guarden en
SAS®. El límite es el tamaño del disco duro de la computadora. Por supuesto, para
bases de datos muy grandes, los procesos del programa pueden tardar minutos,
horas, o hasta días. Generalmente, esto sucede sólo cuando se manejan datos de
poblaciones muy grandes, como por ejemplo, datos de los habitantes de países
enteros. En ciencias agropecuarias, puede haber bases de datos muy grandes en
análisis genéticos, pero, para la mayoría de la investigación en agronomía y ciencia
animal, las bases de datos no son muy grandes, y el programa corre en fracciones
de segundo.

Acceso a los códigos guardados

Los códigos guardados pueden encontrarse a través del dibujo del fólder amarillo
abierto, o con “File”, y luego “Open”. Cuando se abre un código que se encuentra
guardado, se abre en el “Editor”, por lo tanto, para ejecutarlo, basta oprimir “Run;” y
se ejecutarán todos los códigos guardados, en el orden de aparición en el “Editor”.
Por supuesto, si se desea ejecutar uno solo de una serie de códigos, basta con
sombrearlo y luego oprimir “Run;”.

Introducción al manejo de datos, utilizando SAS ®


24
CAPÍTULO 5

Los programas de SAS®

En SAS las instrucciones (llamadas “programas o “códigos” de SAS”) se escriben en


la ventana del editor. El “Enhanced Editor”, disponible de la versión de SAS ® 8.2 en
adelante, escribe en letras de colores que ayudan a verificar de un vistazo que el
código esté correcto. Las porciones incorrectas quedan resaltadas en rojo.

Las instrucciones de un código se van a ejecutar en el orden en el que se escriban


(esto hay que tenerlo siempre presente). Todas las instrucciones, o el final de una
serie de instrucciones deben terminar en punto y coma (“; “).

Por lo anterior, cuando un programa no corra bien, primero hay que verificar que:
1. No se haya olvidado una “;”
2. Todas las palabras estén correctamente escritas, y
3. El orden de las palabras en los programas ó códigos.

Acerca de los comentarios

Dentro de un código pueden insertarse comentarios. Es aconsejable hacerlo,


especialmente si se piensa utilizar el mismo código en un futuro, para tener una
referencia de lo que hace cada parte del código. Dentro de un comentario (
comentario;), se puede escribir cualquier cosa; todo lo que se encuentre dentro de 
y ; , no va a ser leído por SAS.

Sin embargo, con respecto a la escritura de códigos y comentarios, es preciso


señalar que:
a) LOS COMENTARIOS NO SE DEBEN DE COLOCAR EN MEDIO DE UNA
INSTRUCCIÓN,

Introducción al manejo de datos, utilizando SAS ®


25
b) NO se deben UTILIZAR las “PALABRAS de SAS®” como nombre de una
variable, o como nombre de archivo, o como palabra alguna que sea para uso
del programador,

c) NO se debe usar para codificar (pero se puede utilizar dentro de un


comentario), la LETRA “ñ”; solo se pueden usar las 26 letras que existen en
inglés, puesto que los programas están escritos en ese idioma.

Por ejemplo: Si se quiere escribir:

DATA run;
INPUT rana tamaño salto;
CARDS; También puede escribirse “DATALINES”;
1 1 16
2 2 18
3 3 17
4 1 12
5 2 17
6 3 21
7 1 15
8 2 16
9 3 17
;
 tamaño 1= chico, tamaño 2 = mediano; tamaño 3 = grande;
Run;

El programa no va a correr, porque:


1. El archivo se llama “run” (palabra SAS)

2. El nombre de la segunda variable (tamaño) tiene una “ñ”

3. Se escribió un comentario después de “CARDS”. La instrucción completa


incluye la palabra “CARDS” y todos los datos hasta el final. Se trata de una sola

Introducción al manejo de datos, utilizando SAS ®


26
instrucción, aunque tenga intercalada un “;” después de CARDS, por lo que al
colocar el comentario en ese lugar, se interrumpe la instrucción.

4. Dentro del comentario:  tamaño 1= chico, tamaño 2 = mediano; tamaño 3


= grande; se puso una “;” de más, después de la palabra “mediano”.

No importa si dentro de cada código se intercalan letras mayúsculas y minúsculas, ni


se requiere dejar espacios antes o después de cada orden. Sin embargo, es mucho
más fácil entender de qué se tratan los códigos, encontrar posibles errores, y/o
modificar un código para utilizarlo en otra ocasión, si se sigue un cierto orden.

Para algunos casos de manejo o de análisis de datos, quizá sea preferible utilizar
códigos ya hechos con anterioridad, como una “receta de cocina”, que NO se debe
variar, excepto para cambiar nombres de variables, de base de datos y de archivos.

Recomendación

Cuando se manejan datos, especialmente cuando las bases de datos tienen muchas
observaciones y/o variables (miles o millones), a veces es necesario o aconsejable,
inventar una pequeña base de datos, correrla con el código que esté a prueba,
verificar que el código esté haciendo lo que se desea, y luego cambiar el nombre de
la base de datos con la que verdaderamente se quiere trabajar. También se
recomienda, antes de manejar los datos, hacer una copia de la base de datos
original, y luego manejar la copia, para que si hubiese algún problema, se tenga un
respaldo.

Un código de trabajo en SAS usualmente incluye:

DATA nombre  el nombre del archivo o de la base de datos a trabajar;


PROC nombre  el nombre del procedimiento a utilizar (qué se va a hacer);
run;  indica el fin del código ;
Algunos programadores acostumbran escribir “run; quit;”, y no solo “run;”, hasta el
final del código. Esto es opcional.

Introducción al manejo de datos, utilizando SAS ®


27
Un nuevo paso o una nueva etapa del programa también puede indicarse al iniciar la
siguiente línea con DATA o PROC, pero el fin “final”, debe tener “run;” o “run; quit;”

Procedimientos y órdenes (o instrucciones) de SAS®

Un procedimiento es un programa “prefabricado”, que por su importancia, tiene un


nombre para llamarlo y hacerlo que ejecute sobre una base de datos. Ejemplos son
los análisis de regresión o los análisis de varianza. Algunas instrucciones, que
generalmente realizan acciones menos complejas que los procedimientos, no están
precedidas por la palabra “PROC”.

Algunos procedimientos y órdenes son:

Procedimientos (empiezan con PROC):


a) para manejo de datos: freq, means, y sort.
b) para análisis de datos: glm, reg, y mixed.

Órdenes (van después de DATA):


c) merge, set, if …..then, drop, input, put, y rename

Si los códigos son muy largos, pueden escribirse primero en Word® y luego cortar y
pegar en el “Editor” de SAS. Sin embargo, es preferible hacer códigos sencillos y
cortos, y primero correrlos en archivos de prueba, que sirvan exclusivamente para
verificar que los programas realicen lo que se espera que hagan. Una vez que el
programa corrió con el archivo de prueba, se modifica la parte del código que se
refiere a que archivo debe leer SAS, y se le escriben los comentarios apropiados.

Manejo de los resultados

Se recomienda ir copiando en Word® los resultados que aparezcan en el “Output”, e


ir limpiando la ventana del “Output” entre corridas. Alternativamente, en la ventana de
“Resultados” (vertical, a la izquierda), se puede ir abriendo cada “resultado”, pues
corresponde uno para cada código.

Introducción al manejo de datos, utilizando SAS ®


28
Existen varias opciones que controlan como saldrán los resultados de SAS ® al
“Output”. Sólo unas cuantas son las que se utilizan en forma rutinaria para cambiar
los defaults. Para ver la lista completa de opciones disponibles, se escribe:
proc options;
Run;

Para utilizar una opción, escriba la palabra OPTIONS como parte del código de SAS,
i.e.

Options linesize= 80 nodate;

En este caso, la opción va a dar un tamaño de línea de 80 caracteres. “Nodate” es


una opción que pide no imprimir la fecha en las hojas de resultado de SAS.

Las opciones se pueden poner en la primera línea que se escriba, pero puede estar
en cualquier lugar del código, excepto en medio del mismo. Si se escribe otra opción
después, se cancelan las primeras.

NOTA IMPORTANTE: Si se desea detener la ejecución de un programa, se debe


escribir QUIT, STOP, o ABORT, o mejor aún, esperar pacientemente hasta que SAS
termine de ejecutar el programa. Nunca se debe cerrar SAS para tratar de detener un
programa, pues los datos van a desaparecer hasta donde hayan sido leídos por el
programa en ejecución. Es recomendable tener un respaldo de la base de datos
original, y utilizar las copias para ejecutar todos los programas deseados, ya
que un error de código puede hacer que se borren o se modifiquen los
archivos.

Introducción al manejo de datos, utilizando SAS ®


29
Introducción al manejo de datos, utilizando SAS ®
30
CAPÍTULO 6

La base de datos

Los archivos de datos en SAS® tienen una estructura bien definida: las variables se
encuentran en columnas (de hecho, a veces se les llama “columnas”), mientras que
las observaciones están en “hileras”, en forma parecida a las tablas de Excel®, como
se vio en el ejemplo de las ranas. Sin embargo, se pueden inter convertir las hileras
en columnas con “proc transpose” (que no se va a tratar en esta obra). En caso de
que se requiriese efectuar este tipo de manipulación de los datos, se recomienda
utilizar Excel®. Esto puede hacerse exportando los datos de SAS® hacia Excel®
(también utilizando la función del “Wizard”, como se verá después para la
importación de datos de Excel® hacia SAS®), efectuar el manejo que se desee en
los datos, y reimportando a SAS®, o bien, manipulando los datos originales desde el
principio en Excel®. Sin embargo, en este caso (y siempre), se debe cuidar que
todas las celdas de Excel® tengan el formato correcto; es decir, que no vaya a haber
un formato de texto donde debería haber un formato de fecha, o un formato de
moneda donde deba ser de número, etc. Cuando esto sucede, parte de la
información se va a transferir a SAS® en forma incorrecta o simplemente no se va a
transferir, ya sea toda, o parte de la tabla de Excel®.

Los datos pueden pegarse desde un editor de textos, escribirse directamente en la


ventana del “Editor” de SAS®, o bien, importarse del editor de textos o de una hoja
de cálculo (como Excel®) a un archivo de SAS®, y hacer este archivo, ya sea
temporal o permanente. También se pueden exportar los datos. En el menú se
encuentra un ayudante (Wizard) para importar o para exportar.

Introducción al manejo de datos, utilizando SAS ®


31
Como ejemplo, vamos a importar una base de datos desde Excel® (un archivo de un
experimento de maíz), y luego vamos a exportar una base de datos de vacas
lecheras hacia Excel®.

1. Importar bases de datos de Excel®

Supongamos que tenemos una base de datos “Evaluación de genotipos de maíz” en


Excel® (una porción de esta base de datos se encuentra en el Apéndice). Debemos
importar esta base de datos hacia SAS®. Esta base de datos se puede importar
mediante un código escrito en el “Editor” para que quede en SAS® un archivo igual al
de Excel®. Sin embargo, para analizar esos datos, los códigos a usar tendrían que
ser mucho más complicados porque en el archivo hay comentarios (como se ve en el
Apéndice), y los nombres de las variables no son los más adecuados para utilizar los
procedimientos de SAS®, por lo que es recomendable (aunque no siempre
necesario, según la versión) limitarse a ocho letras, como se mencionó antes. Con
una base de datos como la del Apéndice, habría que indicarle a SAS® que líneas o
hileras no debe leer, cual de las hileras contiene el nombre, y muchos otros detalles.
Es preferible volver a guardar el archivo de Excel® con las siguientes modificaciones:

1. Eliminar el título: “Evaluación….”

2. Hacer que los nombres de las columnas (variables) tengan ocho o menos
letras y que no contengan espacios, guiones, puntos, etc. etc. El nombre debe
empezar con una letra, y se pueden incluir números y guión bajo.

3. Que en los datos perdidos (inexistentes en esta base de datos) haya espacio
en blanco, no puntos, ni ceros.

4. Que si hubiera alguna fecha (no en este caso) fuera seguro que el formato de
celda en Excel®, es de Fecha.

5. Eliminar los comentarios.

6. Eliminar las unidades de medida. Sólo deben quedar los nombres de las
variables y las variables.

Introducción al manejo de datos, utilizando SAS ®


32
7. Guardar los cambios en Excel® con otro nombre (porque este archivo
tiene menos información que el original), para utilizar este archivo para
SAS. Hay que cerrar el archivo antes de poder importarlo a SAS®.

Algunos programadores prefieren guardar sus bases de datos ya listas para ser
exportadas a SAS, en formato CSV (comma delimited). Todas las instrucciones que
siguen son válidas para esta opción, únicamente se elige, en lugar de “Excel”, “CSV”,
y todo lo demás se hace exactamente igual.

El archivo en Excel® para este ejemplo, queda como se ve en la Figura 10.

Figura 10. Archivo de datos de Excel® editado para ser exportado a SAS®.

Para importar los datos de Excel® (Figuras 11 a 17):

a) en “File” del menú de SAS®, buscar “Import Data” y “hacer clic”.

Introducción al manejo de datos, utilizando SAS ®


33
b) aparece una ventana (este es el “Wizard”) con el “default” de importar los
datos de Excel®, oprimir NEXT.

c) aparece otra ventana para escribir la localización del archivo en Excel®; es


más fácil, sin embargo, oprimir BROWSE y buscar el archivo.

d) localizar el archivo y oprimir ABRIR.

e) en la ventana dar OK.

f) seleccionar la hoja de Excel® que se desea importar y dar NEXT.

g) seleccionar el archivero en donde se desea guardar la base de datos. Si se


selecciona el “Default” WORK, el archivo será temporal, por lo que se borrará
tan pronto se termine de trabajar esa sesión de SAS®. En esa misma ventana
se le debe dar un nombre al archivo importado; en este caso, el nombre es
“Maiz1”. Recuerde: sólo se permiten guiones bajos, y no se permite un nombre
que contenga espacios. Sería incorrecto poner “Maiz 1” o “Maiz-1”. También es
mejor limitarse a ocho caracteres. Una vez seleccionado todo esto, oprimir
NEXT.

h) en la siguiente ventana oprimir FINISH.

Introducción al manejo de datos, utilizando SAS ®


34
Figura 11. Utilización del Wizard para importar datos hacia SAS®.

Figura 12. Selección del programa de donde se van a importar datos a SAS®.

Introducción al manejo de datos, utilizando SAS ®


35
Figura 13. Búsqueda de la localización del archivo a importar.

Figura 14. Selección del archivo a importar.

Introducción al manejo de datos, utilizando SAS ®


36
Figura 15. Aceptar el archivo seleccionado.

Figura 16. Selección del archivero donde se va a guardar el archivo a importar.

Introducción al manejo de datos, utilizando SAS ®


37
Figura 17. Mensaje que aparece en el “Log” después de una importación exitosa.

Sale un mensaje en el “Log” de que el archivo temporal Work.maiz1 fue


exitosamente creado (Figura 17). Para ver el archivo vamos a la ventana vertical a la
izquierda (la del ambiente de SAS®), en Libraries abrimos WORK y encontramos el
archivo, tal y como se ve en la Figura 18.

Si no se van a hacer todos los análisis en ese momento, es preferible guardar el


archivo en forma permanente. Es muy fácil después borrarlo (con DELETE), pero por
lo pronto conviene tenerlo disponible. Se recordará que ya habíamos creado el
archivero EJS. Ese es el archivero que vamos a utilizar para guardar MAIZ1. Escriba
lo siguiente en el “Editor”, y después oprima el dibujo de RUN:
DATA ejs.maiz1;
set maiz1;
run ;

y…!Listo! La base de datos es permanente.

Introducción al manejo de datos, utilizando SAS ®


38
Figura 18. Verificando que los datos se hayan importado correctamente.

2. Exportar bases de datos de SAS® hacia Excel®

Una razón por la que se suelen exportar los datos de SAS® a Excel®, es porque las
gráficas en Excel® son más atractivas y fáciles de hacer. El procedimiento es
prácticamente el mismo (en reversa) que para importar utilizando el Wizard (Figuras
19 a 22).

Por ejemplo. Supongamos que tenemos una pequeña base de datos en SAS® y que
tenemos una base de datos más grande en Excel®. Para unir esas bases de datos
podemos:

a) importar el archivo de Excel® hacia SAS® o


b) exportar los datos de SAS® hacia Excel®.
c) unir los dos archivos.

Introducción al manejo de datos, utilizando SAS ®


39
Supongamos que la base en Excel® está en constante aumento. Puesto que
aumentar datos es más fácil hacerlo en Excel®, decidimos que es preferible exportar
los datos que se tienen en SAS®.

El archivo en SAS® se llama “exportar” y está en la carpeta “Ejs”.

Vamos a “File”, “export data” y damos clic:

Figura 19. Selección de la opción de “exportar” en el Wizard.

Aparece una nueva ventana; ahí, debajo de “Choose the source SAS dataset”
(“seleccione la base de datos de origen”), en donde dice “Library:” seleccionar EJS, y
en donde dice: “Member”, seleccione el archivo llamado “Exportar”, y luego haga clic
en “Next”:

Introducción al manejo de datos, utilizando SAS ®


40
Figura 20. Utilización del Wizard para exportar datos de SAS®.

Dejamos los defaults, que incluyen exportar a Excel® y damos clic en “Next”.
Entonces se abre la ventana que sirve para buscar la carpeta de Excel® (haciendo
clic en “Browse”) en donde vamos a guardar la base de datos que queremos
exportar. En este caso, la carpeta se llama “Curso de SAS”. Al archivo le nombramos
“Masdatos”, y finalmente, damos clic en “Guardar”.

Introducción al manejo de datos, utilizando SAS ®


41
Figura 21. Buscando el lugar donde se van a guardar los datos a exportar.

Figura 22. Dándole nombre al archivo a exportar.

Introducción al manejo de datos, utilizando SAS ®


42
En la siguiente ventana damos clic en “Ok”, y finalmente, en la próxima ventana
ponemos un nombre (en este caso le pusimos “maiz”) para completar el proceso y
damos clic en “Finish”. El archivo en Excel® se llama “Masdatos”.

3. Otras formas de importar o exportar (sin Wizard)

Se pueden importar y exportar datos sin utilizar el Wizard. Esto es un poco más
complicado y generalmente, el Wizard es la opción más indicada y suficiente. Sólo se
ofrecen en este capítulo algunos comentarios y un ejemplo como información
general.

Para que SAS sepa que hacer con una base de datos hay que especificar: que tiene
que ir a donde, o que tiene que venir de donde.

Se puede utilizar la orden PUT para exportar o INPUT para importar. En estos casos
es muy importante saber si los datos van a ser exclusivamente numéricos o si van a
contener otros caracteres.

Los datos numéricos contienen sólo números. Los números pueden ser positivos o
negativos, y contener decimales. Se pueden realizar operaciones matemáticas con
ellos, como sumas, restas, y todas las demás.

Los datos de carácter pueden contener números y letras, guión bajo, o


combinaciones de todo lo anterior, pero no se pueden realizar operaciones
matemáticas con ellos.

Por ejemplo, la identificación de animales (ID) puede contener sólo números: 00001,
y a veces números y letras: 0001ENE_04, si se desea informar, por ejemplo, que es
el primer animal o animal 1, y que nació en enero de 2004, o puede ser:
01HO_Ene05, para informar que fue el primer nacimiento, que fue Holstein, y que
nació en enero de 2005. Por supuesto, esto es un ejemplo, pues la identificación de

Introducción al manejo de datos, utilizando SAS ®


43
los animales va a seguir las normas locales, regionales, nacionales o internacionales
que se deseen o deban seguir.

Si al menos una observación contiene un carácter, y no sólo números, la variable


completa se considera de tipo carácter.

SAS® lee primero algunas observaciones de cada columna para decidir el formato
de toda la columna. Si no se especifica en el código que la variable a importar es de
carácter, y no aparece un carácter en las primeras líneas de datos, SAS® va a
suponer que es numérica, pues es el “default”, y todas las observaciones que
contengan algo más que números, se van a considerar datos perdidos. Para pedirle
a SAS que una variable sea considerada de tipo carácter, al nombre de la variable, le
debe seguir un signo $.

Por ejemplo: DATA Ej_2;


INPUT ID $ peso;
Datalines;
123 459
12478 670
Ho1 500
Ho2 564
Ho_02 605
HoCAN_1 532
;
Run;

Como puede verse, no importa que las columnas de datos de las variables (ID y
peso) estén alineadas, y nótese que en las observaciones y hasta en el código, se
pueden entremezclar letras y números, y mayúsculas y minúsculas. Sin embargo, es
mejor guardar el mayor orden posible, pues además de que cuando hay errores de
programación y un programa no corre, es más fácil encontrar los errores (o “bugs”,

Introducción al manejo de datos, utilizando SAS ®


44
como coloquialmente se les nombra en inglés), en un programa escrito con cuidado,
y en forma consistente, que en uno en desorden.

En la Figura 23 vemos al archivo “Ej_Dos”, que se encuentra en el archivero WORK,


que es en donde se guardó por no haberse especificado un archivero permanente.
Para guardar los datos en la carpeta permanente “EJS”, por ejemplo, se hubiera
escrito: “DATA Ejs.Ej_2”.

Figura 23. Ejemplo de como se ven los datos de un archivo.

Es importante señalar que los nombres de las variables deben contener menos de 32
carácteres (en la versión 7 y anteriores, sólo se permitía un máximo de ocho). Cada
nombre debe empezar con una letra o con un guión bajo. Los nombres de variables
también pueden incluir números. Aquí vamos a restringirnos a nombres de ocho

Introducción al manejo de datos, utilizando SAS ®


45
carácteres o menos, y utilizar la primera letra en mayúscula. El número de variables
(columnas) que se pueden incluir en una tabla de SAS es prácticamente ilimitado.

Introducción al manejo de datos, utilizando SAS ®


46
CAPÍTULO 7

Más acerca de lectura de datos por SAS®

En este capítulo se resumen las maneras de hacer que SAS lea los datos que se
necesiten trabajar. Los métodos más usuales ya han sido cubiertos. Este capítulo es
opcional. Puede pasarse al Capítulo 8 sin ningún inconveniente.

1. Creando un archivo de datos con la orden DATA

Con esta opción, los datos crudos (antes del análisis) son parte del código de SAS y
se escriben en el “Editor”.

El siguiente programa o código con la orden DATA crea un archivo de datos llamado
ENCUESTA con 10 observaciones y siete variables. Las variables se llaman ID,
SEXO, EDAD, ING, R1, R2, y R3. Los datos corresponden a una encuesta en donde
ING significa los ingresos anuales totales, en miles, R1 a R3 son la calificación con
que los individuos (ID) evaluaron a tres productos orgánicos que piensan lanzarse al
mercado. La palabra INPUT define a las variables que deben leerse en cada línea de
datos. La palabra DATALINES le indica a SAS que el proceso de la palabra DATA ha
sido completado y que la siguiente línea contiene datos reales. Nótese que las líneas
que contienen los datos no terminan en punto y coma. En lugar de la palabra
DATALINES se puede utilizar la palabra CARDS. Las dos son equivalentes. El punto
y coma antes de PROC PRINT es opcional, pero define mejor cuales son los datos.
Proc print se utiliza para que los datos aparezcan en el “Output”, de tal manera que
no sea necesario abrirlos desde su archivo para verlos, y para que puedan copiarse
a Word® e imprimirse.

options nocenter;
DATA encuesta;
INPUT id sexo $ edad ing r1 r2 r3 ;
DATALINES;
1 F 35 17 7 2 2

Introducción al manejo de datos, utilizando SAS ®


47
17 M 50 14 5 5 3
33 F 45 6 7 2 7
49 M 24 14 7 5 7
65 F 52 9 4 7 7
81 M 44 11 7 7 7
2 F 34 17 6 5 3
18 M 40 14 7 5 2
34 F 47 6 6 5 6
50 M 35 17 5 7 5
;
PROC PRINT; RUN;

La salida (lo que se ve en el “Output”) de esta corrida es la siguiente:

OBS ID SEXO EDAD ING R1 R2 R3


1 1 F 35 17 7 2 2
2 17 M 50 14 5 5 3
3 33 F 45 6 7 2 7
4 49 M 24 14 7 5 7
5 65 F 52 9 4 7 7
6 81 M 44 11 7 7 7
7 2 F 34 17 6 5 3
8 18 M 40 14 7 5 2
9 34 F 47 6 6 5 6
10 50 M 35 17 5 7 5

La variable SEXO en la orden INPUT está seguida por un signo de dólar ($) para
indicar que esta variable es de carácter. Si no se especifica la instrucción, SAS
supone que las variables son numéricas. Si entonces encuentra un carácter (una
letra o símbolo), le va a asignar un valor perdido (.) a esa observación. Por ejemplo,
si se quita el signo de dólar, como se ve en el siguiente código:

DATA encuesta;
INPUT id sexo edad ing r1 r2 r3 ;
DATALINES;
1 F 35 17 7 2 2
17 M 50 14 5 5 3
33 F 45 6 7 2 7
49 M 24 14 7 5 7
65 F 52 9 4 7 7
81 M 44 11 7 7 7
2 F 34 17 6 5 3
18 M 40 14 7 5 2
34 F 47 6 6 5 6
50 M 35 17 5 7 5
;
PROC PRINT; RUN;

Introducción al manejo de datos, utilizando SAS ®


48
El resultado de la corrida se verá así:

OBS ID SEXO EDAD ING R1 R2 R3


1 1 . 35 17 7 2 2
2 17 . 50 14 5 5 3
3 33 . 45 6 7 2 7
4 49 . 24 14 7 5 7
5 65 . 52 9 4 7 7
6 81 . 44 11 7 7 7
7 2 . 34 17 6 5 3
8 18 . 40 14 7 5 2
9 34 . 47 6 6 5 6
10 50 . 35 17 5 7 5

2. Leyendo datos con señalador de columna

A veces es útil decirle a SAS exactamente donde encontrar el inicio y el final de una
observación o columna. Por ejemplo, cuando los datos contienen una o más
variables de carácter con diferentes longitudes o que contengan espacios. Por
ejemplo, se desea importar las variables llamadas nombre, edad, ciudad y estado de
una base de datos:

data ejem_dos;
input nombre $ 1-20 edad ciudad $ 29-37 estado $ ;
datalines;
Oliver Schabenberger 33 Lansing MI
Juan E. Domínguez 37 New York NY
;
run;
proc print data= estosdat; run;

Observemos que hay un “$” después de nombre, seguido de la posición en que se


debe encontrar el nombre; en este caso, entre las posiciones 1 y 20 de datalines.
Después viene una variable numérica: la “edad”; aquí no se puso ni “$” ni la posición
en la columna, porque se debe leer el número entero. Luego viene “ciudad”, con su
signo $ que indica que es una variable de carácter, y la indicación de donde a donde
debe leerse. Finalmente, tenemos “estado”, indicando que es un carácter, pero sin
especificar su posición. No es necesario para la variable ESTADO porque su entrada
comienza en la columna siguiente a la variable anterior y no contiene espacios en
blanco, además, siendo la última variable, no es necesario saber su longitud total.

Introducción al manejo de datos, utilizando SAS ®


49
En resumen: Después de variables de texto, escribir “$”. Si el nombre de la variable
incluye espacios, indicar las columnas de datalines (las líneas de datos) en donde
puede encontrarse la variable (las variables en SAS® por default están delimitadas
por espacios). Los datos del archivo EJEM_DOS aparece así:

OBS NOMBRE EDAD CIUDAD ESTADO

1 Oliver Schabenberger 33 Lansing MI


2 Juan E. Dominguez 37 New York NY

Si el señalador de $29-37 después de CIUDAD se reemplaza con un simple $ para


indicar una variable de carácter en la orden INPUT, pero sin indicar de donde a
donde se debe leer, ésto es lo que sucede:
data ejem_dos;
input nombre $1-20 edad ciudad $ estado $ ;
datalines;
Oliver Schabenberger 33 Lansing MI
Juan E. Dominguez 37 New Cork NY
;
run;
proc print data=ejem_dos; run;

OBS NOMBRE EDAD CIUDAD ESTADO


1 Oliver Schabenberger 33 Lansing MI
2 Juan E. Domínguez 37 New York

Para la segunda observación, SAS encuentra los carácteres 'New' y los asigna a la
variable CIUDAD suponiendo que el espacio entre 'New' y 'York' delimita a las dos
variables. Los carácteres 'York' son asignados a la siguiente variable de la orden
INPUT, que es ESTADO.

3. Leyendo datos escritos de corrido

Suponga que un archivo contiene tres variables, X, Y, y Z. Un código con DATA


podría ser:

data XYZ;
input x y z;
datalines;

Introducción al manejo de datos, utilizando SAS ®


50
1 1 12.4
1 2 11.3
1 3 1.4
2 1 2.1
2 2 19.4
;
run;

SAS® también puede leer observaciones múltiples en cada línea de datos.


Simplemente añada el símbolo @@ al final de la declaración de “input”, de la
siguiente manera:

data XYZ;
input x y z @@;
datalines;
1 1 12.4 1 2 11.3 1 3 1.4
2 1 2.1 2 2 19.4
;
run;

Por el símbolo @@, SAS® lee cada línea de datos y va llenando las variables X, Y, y
Z en turno, y continuará llenando las variables hasta que llegue al final de la línea.
Sin el símbolo @@, se habría pasado a la siguiente línea tan pronto la última
variable estuviese llena, dejando fuera datos, como ocurrió en el ejemplo anterior
cuando leyó “New” y dejó fuera “York”, y evitó que el valor “NY” siquiera fuese leído.

4. Leyendo datos de archivos ASCII

Algunas veces se puede obtener gran cantidad de datos que se encuentran escritos
en archivos ASCII, que generalmente tienen extensión TXT. Esto ocurre con editores
de texto, como el Notepad de Microsoft, o muchos otros, que sirven específicamente
para guardar datos (existen editores de texto que se pueden obtener gratis desde
Internet). Algunos programas, como C, C++, Fortran, y otros, requieren que la
información se encuentre en archivos de extensión TXT. Sin embargo, generalmente

Introducción al manejo de datos, utilizando SAS ®


51
es más fácil editar los datos primero en SAS®, y después, enviarlos al programa de
análisis que se desee.

También es posible que los archivos que se deban analizar con SAS®, de origen
vengan en archivos ASCII. Con frecuencia, trabajar con ese tipo de archivos es más
conveniente que con archivos de hojas de cálculo, porque los archivos ASCII ahorran
espacio, y a veces son preferibles cuando las variables contienen muchas
observaciones.

Hay dos formas para hacer que SAS lea un archivo ASCII utilizando la orden DATA:
una es usando sólo la palabra INFILE y otra es con la palabra FILENAME más la
palabra infile.

Infile

Utilice la palabra “infile” antes de la palabra “INPUT”. La estructura de la orden


INPUT no cambia. Es exactamente como si se fuera a copiar el contenido del archivo
ASCII dentro de la orden DATA después de la palabra DATALINES, sólo que ahora
debe especificar en la orden INFILE cual archivo se debe leer, y donde se encuentra.
En el ejemplo de código que sigue, el archivo de llama “Do.txt” y se encuentra en el
drive “D”, dentro de una serie de fólderes. Por ejemplo:

data readasc;
infile 'D:\investig\Toxina\Data2007\DO.txt';
input lugar rancho muestra DO;
run;

Filename

FILENAME asocia un archivo con un nombre corto dentro de un programa de SAS.


La palabra FILENAME debe aparecer afuera de la orden DATA. Por ejemplo:
filename toxic 'D:\investig\Toxina\Data2007\DO.txt';
data readasc;
infile toxic;

Introducción al manejo de datos, utilizando SAS ®


52
input lugar rancho muestra DO;
run;

El archivo D:\investig\Toxina\Data2007\DO.txt ahora se encuentra asociado con el


nombre más corto “TOXIC”. La palabra INFILE dentro de la orden DATA ahora se
refiere al nombre corto. A este atajo en el lenguaje que usa para SAS, que parecido a
utilizar un apodo, se le conoce como un fileref.

Si las columnas del archivo de ASCII no están delimitadas por espacios (por ejemplo,
los archivos de MSExcel que se guardan como archivos de texto *.prn están
delimitados por comas), se pueden añadir las opciones de delimitantes dentro de la
declaración de INFILE. Por ejemplo, para especificar que los delimitantes entre
variables son comas, se escribe: delimiter = “,”; tal como se ve a continuación:

filename toxic 'D:\investig\Toxina\Data2007\DO.txt';


data readasc;
infile toxic delimiter=',';
input lugar rancho muestra DO;
run;

5. Para saltar información que SAS® no debe leer

Muchos archivos contienen información del encabezado, que no debe ser parte de
los datos para SAS®, como en el caso de los datos en el Apéndice. Para saltarse
registros al principio del archivo, utilice la opción FIRSTOBS= . Para leer únicamente
un número específico de registros, utilice la opción OBS = . Por ejemplo:
filename toxic 'D:\Investig\Toxina\Data2007\DO.txt';
data readasc;
infile toxic delimiter=',' firstobs=12 obs=100;
input lugar rancho muestra DO;
run;

Sólo se van a leer 100 observaciones del archivo D:\Investig\Toxina\Data2007\DO.txt


comenzando por la 12a línea, y se van a buscar comas como delimitantes de las
variables.

Introducción al manejo de datos, utilizando SAS ®


53
Introducción al manejo de datos, utilizando SAS ®
54
CAPÍTULO 8

Algunos procedimientos de SAS®

A partir de este capítulo, se dará una especie de lista de códigos. Todos estos deben
de escribirse en la ventana del “Editor”, y hacer referencia a los archivos que se
deseen manejar o analizar.

1. Para ordenar los datos

A veces sucede que se tienen los datos revueltos, ya sea por haberlos capturado
poco a poco a través del año, y/o haber unido varias bases de datos ya una vez
guardados en SAS®, o por cualquier otra causa. También puede ser útil ordenar o
reordenar las bases de datos por orden alfabético o por fecha de captura o por
alguna característica, como número de lactancia, etc., para revisar más fácilmente
los datos. Por otra parte, ordenar es un paso indispensable antes de utilizar ciertas
órdenes, como “merge” (página 66), por ejemplo. Para reordenar los datos, se utiliza
la orden “proc sort”.

Proc sort

Ordena los datos por la variable o las variables que seleccionemos.

El código básico es:

proc sort data=nombre; *”nombre” es el nombre del archivo;


by id; *”by id” le indica a SAS® por cual variable debe de ordenar los datos, en este
caso, por la variable llamada “id”;
*o puede ser, por ejemplo:“by id raza sexo…” etc;
Run;

Introducción al manejo de datos, utilizando SAS ®


55
Para eliminar datos repetidos

También se puede pedir que se eliminen los datos repetidos en la hilera de la


variable por la cual se está ordenando. Esto se hace con la orden “nodupkey”. Por
ejemplo, si se desea eliminar identificaciones repetidas (id iguales) de la base de
datos llamada “nombre”, se debe escribir:

Proc sort data=nombre nodupkey;


By id;
Run;

2. Para verificar la calidad de los datos y/o resumir información de los datos
crudos

En agricultura y ganadería, a veces se realizan estudios retrospectivos, que también


se denominan observacionales. Esto significa que los datos no fueron obtenidos
siguiendo un diseño específico, y por lo tanto, generalmente no están listos para
analizarse tal como fueron capturados. En estos casos, especialmente, pero no
exclusivamente, conviene verificar tanto la calidad de los datos que se han
recopilado, como si hay suficientes datos en todas las categorías de interés para
realizar análisis valiosos. Usar proc freq y proc means son dos formas de obtener
información rápidamente de la base de datos con la que estemos trabajando.

Proc freq

Con Proc freq se obtienen frecuencias de las variables de interés. De esta manera,
se puede verificar que se tengan suficientes datos para un análisis estadístico
confiable, además de que se pueden ver algunas tendencias generales de los datos.

El código de proc freq, que saca las frecuencias de las variables que se especifiquen,
a la ventana del “Output”, es:

proc freq data= nombre;


tables variable1;
*puede ser variable1*variable2*…variablen;
run;

Introducción al manejo de datos, utilizando SAS ®


56
Por ejemplo, se está trabajando con una base de datos de cabras (gotas.work1 es el
nombre del archivo), y se va a estudiar que tan estacionales son las cabras en esa
población. Para tener una idea, queremos obtener las frecuencias por mes de
nacimiento (mo_brth es el nombre de esa variable). El código que se usa es el
siguiente:

proc freq data=goats.work1;


options nodate;
table mo_brth; run;

El resultado aparece en el Output, y contiene las frecuencias directas (frequency), el


porcentaje (percent), las frecuencias acumuladas (cumulative frequency) y el
porcentaje acumulado (cumulative percent), así como la cantidad de observaciones
en donde (en este caso) la variable mo_brth tiene datos perdidos (frequency
missing):

                                       The FREQ Procedure 
 
                                                      Cumulative    Cumulative 
                  mo_brth    Frequency     Percent     Frequency      Percent 
                  ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 
                        1       19855        6.83         19855         6.83 
                        2       59485       20.45         79340        27.27 
                        3       89286       30.69        168626        57.97 
                        4       61783       21.24        230409        79.21 
                        5       30699       10.55        261108        89.76 
                        6       12257        4.21        273365        93.97 
                        7        4216        1.45        277581        95.42 
                        8        1325        0.46        278906        95.88 
                        9        1361        0.47        280267        96.35 
                       10        2020        0.69        282287        97.04 
                       11        3355        1.15        285642        98.19 
                       12        5254        1.81        290896       100.00 
 
                                   Frequency Missing = 26002

Si se prefiere sacar los datos a un archivo, se incluye la orden:

tables variable1/noprint out = nombre_archivo;


* la palabra “noprint” puede ir antes o después de la palabra “out” que especifica a
donde se desea enviar los resultados;

Introducción al manejo de datos, utilizando SAS ®


57
Por ejemplo, si se desea que las frecuencias aparezcan en el archivo temporal
“check”, se escribiría:

proc freq data=goats.work1;


options nodate;
table mo_brth/noprint out = check; run;

Si el archivo va a ser temporal, sólo hay que poner un nombre; si se prefiere que se
guarde el archivo en forma permanente en SAS®, entonces hay que indicar el
nombre del archivero en donde debe guardarse. Si, por ejemplo, el archivero se
llama: “datos” y el archivo queremos que se llame “results”, la orden sería:
out=datos.results.

Proc means

Con proc means es fácil constatar que los datos con que estamos trabajando estén
dentro de rangos razonables y que SAS esté tomando los datos con el formato
correcto. Por ejemplo, si se han importado datos de Excel®, en ocasiones una
columna que debería tener formato de números, es importada con formato de texto
(o viceversa), y aun cuando físicamente se pueda ver la tabla en SAS® con números,
es posible que tenga otro formato, y en este caso, de los datos de esa columna, no
se sacarán promedios.

Proc means se utiliza para obtener promedios, desviaciones estándares, máximos y


mínimos de los datos. El código de proc means que va a considerar todas las
variables es simplemente:

Proc means data= nombrearchivo;


Run;

Si sólo se quiere la información de algunas variables, entonces, antes de la orden


“run;” añadir:

Var variable1 variable2 …..variablen;

Y queda, por supuesto:

Introducción al manejo de datos, utilizando SAS ®


58
Proc means data= nombrearchivo;
Var variable1 variable2 …..variablen;
Run;

Si se desean los promedios y demás información, correspondiente a una o más


variables de clasificación (no numéricas), como raza, año, o país, por ejemplo, el
código debe incluir la(s) variable(s) clasificatorias de las que se desee obtener la
información, precedidas por la palabra “by”, y las variables a las que se les obtenga
promedios, mínimos, etc., precedidas por la palabra “Var”.

Por ejemplo, supongamos que se tiene un archivo (temporal, pues no lleva el nombre
del archivero) llamado “j”, del cual queremos obtener información acerca de plantas
susceptibles a ser atacadas por plagas. Por razones de nuestra investigación,
necesitamos que la información sea por especie de planta atacada y tipo de insecto
plaga. Se requieren estadística descriptiva con los promedios, desviaciones
estándares y máximos, y mínimos de la cantidad de insectos (en cualquier estado de
evolución) encontrados en un muestreo y de la edad de las plantas atacadas.

Sin embargo, para poder utilizar esta opción de proc means, es necesario ordenar
los datos por las variables de las cuales pretendemos obtener información, de la
siguiente manera:

proc sort data=j;


by especie insecto; run;

El código que nos da la estadística descriptiva es:

proc means data=j;


*se pretende obtener información de la base de datos llamada “j”;
by especie insecto;
*estas son las variables clasificatorias;
VAR cantidad;
*queremos saber el promedio de la cantidad de insectos encontrados en un
muestreo de plantas que han sido atacadas;
run;

Introducción al manejo de datos, utilizando SAS ®


59
Si la base de datos fuera la siguiente:
Especie edad cantidad insecto
roble 90 2 grillo
roble 90 3 grillo
roble 180 4 grillo
roble 180 5 grillo
cedro 90 1 grillo
cedro 90 0 grillo
cedro 180 7 grillo
cedro 180 5 grillo
roble 90 8 palomill
roble 90 6 palomill
roble 180 4 palomill
roble 180 3 palomill
cedro 90 15 palomill
cedro 90 12 palomill
cedro 180 6 palomill
cedro 180 2 palomill
*se escribió “palomill”, es vez de “palomilla” para mantener en ocho o menos
el nombre;

Nótese que existen más variables (está la edad, que en este caso no interesa) que
las que se utilizan en la orden de proc means.
El output sería:
                                The SAS System             1 
 
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=cedro insecto=grillo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 
 
                                       The MEANS Procedure 
 
                                  Analysis Variable : cantidad 
 
                N            Mean         Std Dev         Minimum         Maximum 
4       3.2500000       3.3040379               0       7.0000000 
 
 
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=cedro insecto=palomill‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 
 
                                  Analysis Variable : cantidad 
 
                N            Mean         Std Dev         Minimum         Maximum 
4       8.7500000       5.8523500       2.0000000      15.0000000 
 
  
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=roble insecto=grillo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 
 
                                  Analysis Variable : cantidad 
 
                N            Mean         Std Dev         Minimum         Maximum 
4       3.5000000       1.2909944       2.0000000       5.0000000 
 
 
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=roble insecto=palomill ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 
 
                                  Analysis Variable : cantidad 
 
                N            Mean         Std Dev         Minimum         Maximum 
4       5.2500000       2.2173558       3.0000000      8.00000004 

Introducción al manejo de datos, utilizando SAS ®


60
Este se puede copiar, editar (para que se vea una tabla más presentable) y guardar
en un archivo de Word®, por ejemplo.

El siguiente código ordena que los datos, una vez que hayan sido ordenados por ID,
se guarden en un archivo llamado “lactone”, y no permite que haya observaciones
repetidas por la variable ID.

PROC SORT DATA=lact OUT=lactone NODUPKEY;


by ID;
run;

3. Para manejar la base de datos

A veces conviene modificar un archivo; por ejemplo para efectuar algún análisis, o
para obtener datos derivados de los originales, o para tener archivos separados
según su contenido. En esta sección se ofrecen algunas opciones para lograr lo
anterior.

Drop

Para eliminar algunas variables, se utiliza la orden DROP:

Data nombre1 (drop = variable1 variable2 ….variablen); *este es el nombre del


archivo en donde van a quedar grabadas todas las variables, excepto las que se
están eliminando con “drop”;
Set nombre2; * este es el archivo original de donde se van a eliminar las variables;
run;

Si se quiere modificar el mismo archivo, puede ponerse el mismo nombre tanto en


“data” como en “set”, pero es preferible poner otro nombre, verificar que se obtiene lo
que uno espera, y entonces ya cambiarle el nombre al archivo. Hay que tener
paciencia o puede perderse un archivo completo por algún error de codificación.
Recuerde que el programa va a hacer lo que se le pida, no lo que uno quiere que
haga.

data nuevo_nombre;
set nombre_anterior;
run;

Introducción al manejo de datos, utilizando SAS ®


61
Keep

Si es más fácil instruir a SAS® acerca de las variables que deban quedarse, en vez
de decirle cuales debe eliminar, entonces se puede utilizar la orden “keep”,
exactamente igual que “drop”:

Data new (keep=variable1 variable2..variablen);


set data old;
run;

Por ejemplo, de una base de datos grande, llamada “vacas.hol” que tiene muchas
variables y todas las lactancias de las vacas, queremos hacer un análisis únicamente
de la primera lactancia, y en el nuevo archivo queremos incluir sólo las variables id
(la identificación) breed (la raza) herdid (el hato) y lactno (el número de lactancia).
Esta nueva base de datos queremos que se llame new. Entonces escribimos en el
“Editor”:

data vacas.new (keep=id breed herdid lactno);


set vacas.hol;
if lactno NE 1 then delete; *esta orden le indica a SAS® que solo queremos las
primeras lactancias;
run;

Rename

Esta orden le cambia el nombre a una variable. Por ejemplo: en el archivo “new”
(recuerde: nada de acentos ni espacios ni símbolos en ningún nombre que se utilice
en SAS®), queremos renombrar algunas variables. Queremos que sus nombres
ahora estén en español en vez de en inglés. Específicamente queremos que en vez
de “breed”, la variable se llame “raza”, en lugar de “milk”, que sea “leche”, y en vez
de “fat”, sea “grasa”. Por precaución, primero copiamos la base de datos a otro
archivo, al que llamamos “new2”. La orden requiere que se escriba:

rename=(variable_antigua=variable_nueva).
En consecuencia, ésto es lo que escribimos:

Introducción al manejo de datos, utilizando SAS ®


62
data new2 (rename=(breed = raza milk=leche fat=grasa ));
set new;
run;

¡Recuerde!
Tenga cuidado en la escritura del código, o mejor haga un archivo temporal, y si los
resultados son los esperados, entonces …. y sólo entonces, haga un archivo
permanente llamado, por ejemplo, analisis.new (o como realmente sea). Otro
ejemplo:

data prueba (rename=(zea_maiz = maiz));


set analisis.pastos;
run;

4. Para crear variables por medio de operaciones matemáticas

Los símbolos +, -, /, * y ** se pueden utilizar para indicar, respectivamente: suma,


resta, división, multiplicación, y elevación al cuadrado. También se pueden hacer
operaciones más complicadas, como elevar a otras potencias y sacar raíces, pero
suele ser más fácil hacerlo en una hoja de cálculo, como Excel® y después importar
los datos a SAS®.

Por ejemplo, se tiene el dato del promedio semanal de producción de leche de unas
vacas, y en vez de eso, se desea obtener el total de leche producida en esa semana.
Como para sacar el promedio, lo que se hizo fue sumar las producciones de la
semana y después, dividir entre siete, se tiene que hacer la operación contraria, es
decir, multiplicar el promedio por siete. Esa operación se hace de la siguiente manera
en el archivo vacas.leche:
Data vacas.leche;
set vacas.leche;
LechAcum = promsem*7;
Run;

Introducción al manejo de datos, utilizando SAS ®


63
Un extracto del archivo vacas.leche, sería:

Vaca promsem
1 23.5
2 27.2
3 25.9

El nuevo archivo sería

Vaca Promsem LechAcum


1 23.5 164.5
2 27.2 190.4
3 25.9 181.3

Otro ejemplo: Se desea formar un número único de identificación de procedencia de


miel. Este va a ser el número del LOTE para exportación. Se tienen claves de dos
dígitos para los datos de país, ciudad, apiario, colmena y cosecha. En un caso
específico, estas claves son las siguientes:

país = 52
ciudad = 12
apiario = 01
colmena = 25
cosecha = 01

pais ciudad apiario colmena cosecha


Lote 52 12 01 25 01

La identificación única de este lote de miel debería ser: 5212012501.


Como se tienen miles de proveedores (miles de lotes), es necesario automatizar la
creación de los números de lotes.

El código para obtener la identificación podría ser:

data export.miel; *los datos deben guardarse en el archivo “export”;


set miel; *los datos originales están en el archivo temporal “miel”;

Introducción al manejo de datos, utilizando SAS ®


64
lote_id = pais*100000000 + ciudad*1000000 + apiario*10000 + colmena*100 +
cosecha;
run;

Así se va a sumar, en el caso del ejemplo:

5200000000 + 12000000 + 010000 + 2500 + 01, lo que da el número de


identificación que se necesita.

5. Para unir dos o más bases de datos

Existen básicamente dos formas de unir datos: añadir las hileras de una base a las
de otra (s), o añadir las columnas de una base de datos a las de otra(s).

En el primer caso, se utiliza la orden “set”, parecido a como ya se vio antes para
hacer una base de datos igual a otra, pero con otro nombre (¿recuerdas? es: data
new; set old; run;).

Set

Por ejemplo, se tienen tres bases de datos para un estudio de eficiencia económica
de la utilización de tres tipos contrastantes de plantaciones forrajeras: una de maíz,
otra de sorgo, y otra de una leguminosa. Las bases se encuentran en el archivero
“Efic”, y para su análisis, se desea unirlas. Lo más lógico es unir sus hileras, es decir,
que quede la información de maíz bajo (o encima ) de la de sorgo y de la
leguminosa.

Entonces se escribe en el “Editor”:


Data Efic.todas; *la nueva base de datos se va a llamar “todas”;
Set efic.maiz efic.sorgo efic.legum; *se están uniendo las bases de cada uno de los
tipos de plantaciones;
Run;

Introducción al manejo de datos, utilizando SAS ®


65
Merge

Esta orden sirve para unir dos o más bases de datos para formar un solo archivo que
contenga las variables de las bases de datos originales, es decir, se unen o
combinan columnas, de manera que la nueva base de datos tenga más variables.

En muchos casos se necesita unir columnas de una serie de bases de datos. Esto
ocurre, por ejemplo, cuando se estén efectuando estudios con mediciones repetidas,
y cuyas bases de datos se van colectando en forma separada por fecha. Si cada
individuo que se mide, digamos….. cada mes, o cada año, etc. tiene un número de
identificación, lo más lógico es que las bases de datos de las diferentes fechas se
vayan uniendo por el número de identificación.

Por ejemplo, en un estudio de crecimiento de árboles, éstos fueron medidos una vez
cada seis meses durante dos años (cuatro medidas). Los datos de cada día de
medición fueron guardados en archivos permanentes llamados, respectivamente:
medida.primera, medida.segunda, medida.tercera, y medida.cuarta. Ahora es preciso
analizar las cuatro bases de datos juntas, para lo cual, se va a formar el archivo
todos_datos:

data todos_datos; *así como está, va a formar un archivo temporal;


merge medida.primera medida.segunda medida.tercera medida.cuarta;
by id_arbol;
run;

Sin embargo, primero es necesario que cada una de las bases de datos del archivero
“medida” (primera segunda tercera y cuarta) se ordenen por la variable a unir, que es
id_arbol. Primero hay que escribir, para cada una de las bases de datos:

Proc sort data = medida.primera;


By ID;
Run;
*este código se va a repetir para cada uno de los cuatro archivos;

Introducción al manejo de datos, utilizando SAS ®


66
Posteriormente se procede a unir los datos con merge. Es muy importante, que las
medidas en cada archivo de datos, de cada una de las cuatro fechas del ejemplo,
tengan nombres diferentes. Por ejemplo, si se midieron: altura, grosor a la base del
tronco, y diámetro de la copa, los archivos deben identificarse con algo que los
distinga entre mediciones, como:

Altura1 grosor1 diam1 para el archivo de la primera medición;


Altura2 grosor2 diam2 para el archivo de la segunda medición;
Altura3 grosor3 diam3 para el archivo de la tercera, y
Altura4 grosor4 diam4 para el archivo de la cuarta y última medición.

Si se dejan exactamente los mismos nombres en los cuatro archivos, al final se van a
tener los datos únicamente del último archivo añadido cuando los datos
correspondan a la misma observación, como se ve en la Figura 24.

Por ejemplo, en el Editor, se escribe lo siguiente:

data check; input id milk;


cards;
1 11
2 12
3 10
4 9
;
run;

data check2; input id milk;


cards;
3 10
4 9
5 6
6 9
7 15
;
run;

data join;
merge check check2;
by id; run;

Los resultados se ven en la Figura 24, en donde se observa que se perdieron


algunos datos del archivo “Check”, por no haber utilizado nombres diferentes de las
variables.

Introducción al manejo de datos, utilizando SAS ®


67
Figura 24. Ejemplo de la orden “merge”.

Otro uso de Merge

La orden Merge puede utilizarse para “filtrar” datos. Por ejemplo, supongamos que
nos llegan los datos productivos y reproductivos de cabras lecheras de toda una
región. Sin embargo, en un archivo aparte tenemos datos de pedigrí de cabras en
donde se indican quienes fueron sus padres y madres. Es preciso que formemos una
base de datos que incluya sólo a las cabras que tengan tanto los registros
productivos y reproductivos, como información de pedigrí, es decir, cabras que se
encuentren tanto en el primero como en el segundo archivo.

Digamos que la base de datos productivos se llama “test1” y la base de datos de


pedigrí se llama “test2”. Un código sería (recuerda primero ordenar ambas bases de
datos por la variable a unir, en este caso, por “id”):

Introducción al manejo de datos, utilizando SAS ®


68
data allgoats; *la nueva base de datos se va a llamar “allgoats”;
merge test1 (in=a) test2 (in=b); *se renombran los dos archivos, ahora son “a” y “b”
para SAS;
by id;
*pide que se unan según su identificación, por supuesto, los datos deben estar
ordenados según esta variable “ID”. Puede unirse por más de una variable;
if a and b; *”And” da la condición de que los IDs deben encontrarse en ambas bases
de datos;
run;

Otras opciones de las condiciones de unión (and, or) podrían ser, por ejemplo:
If a and NOT b, es decir, que estén en la base de datos a, pero no en la b;
If b and NOT a, es decir, que estén en la base de datos b, pero no en la a;
if a, es decir, la condición es que todos los datos del archivo a estén presentes;
if a or b, que estén los datos de a ó de b. Con frecuencia no es necesario utilizar
“or” porque es el default.

En general: si se usa “and” deben suceder las dos condiciones, y si se usa “or”
puede suceder una u otra condición para que los datos sean incluidos. Claro, puede
haber más de dos archivos que se deban unir, y por lo tanto, se tendrían archivos
llamados “a”, “b”, “c”, ….etc.

Introducción al manejo de datos, utilizando SAS ®


69
Introducción al manejo de datos, utilizando SAS ®
70
CAPÍTULO 9

Más de manejo de datos en SAS®

Los condicionantes
If…then

Esta es una orden que sirve para indicarle a SAS® que, si se cumple una condición
en los datos de alguna variable, tiene que actuar de tal o cual forma. Algunos
ejemplos de acciones, podrían ser: If……..algo…then:
Delete (entonces borra)
Output (entonces expónlo, muéstralo)
(alguna operación matemática, crear una variable, o lo que se necesite).

Por ejemplo, supongamos que estamos editando una base de datos de borregos
australianos. La base de datos es demasiado grande como para verificar si todos y
cada uno de los animales tiene identificación. Podemos en este caso utilizar la orden
if…then. Como siempre, primero creamos un archivo de prueba, y si todo sale bien,
entonces, y sólo entonces, haremos un archivo permanente:
Data=id_only; *nuestro archivo de prueba;
set austr.allsheep; *el archivo original;
if id = '.' then delete; *si no tiene “id”, entonces borra;
run;

o, alternativamente:
Data=id_only; *nuestro archivo de prueba;
set austr.allsheep; *el archivo original;
if id NE '.' then output; *si tiene “id”, puesto que NO es Igual a “.” (NE
es NOT EQUAL TO) entonces muestra los datos;
run;

Introducción al manejo de datos, utilizando SAS ®


71
Una pequeña lista de condiciones es la siguiente:

= es igual a…
NE no es igual a…
> es mayor que… sólo para números
< es menor que….sólo para números

En todos los casos, si no se trata de números, sino de texto, es preciso que la


condición esté entre comillas, ya sea: ‘ ‘ ó “ “

Por ejemplo, queremos que de un archivo que tiene datos de vacas Holstein y
Jersey, sólo nos quedemos con vacas Jersey, que están codificadas como "JE”:
data jerseys;
set milk.allcows;
if breed='JE' then output; *Conviene resaltar la orden con espacio;
*Notese que “JE” tiene comillas, porque no es un numero sino una variable de
caracter;
run;

De esta manera tendremos una base de datos (primero temporal, en “jerseys”, que
después podremos convertir a permanente) con los datos únicamente de las vacas
Jersey.

Ahora supongamos que para algunas vacas no tenemos el dato “Edad al parto”, que
vamos a codificar como “EP”, pero tenemos los días en lactancia, la fecha de
nacimiento y la fecha en la que se realizó la evaluación de las vacas, es decir, la
“fecha del muestreo”…

Los días en lactancia son los que han transcurrido desde el parto, lógicamente. La
edad de la vaca es, naturalmente, la fecha de muestro menos la fecha de nacimiento.
En consecuencia:

Edad de la vaca = fecha de muestro- fecha de nacimiento

A su vez, la edad al parto (EP) va a ser:

EP = Edad de la vaca – días en lactancia

Introducción al manejo de datos, utilizando SAS ®


72
Un código que podemos utilizar para las vacas que no tienen la edad al parto, es:
Data edad;
Set expto.jerseys;
If EP = “.” then EP = (FechMues – FechNac) - Diaslac;
Run;

Por supuesto, la edad de la vaca va a estar en días, para este ejemplo.

Else if … then

Cuando se tienen varias condiciones que realizar sobre una misma variables, es
preferible utilizar la opción “else if….then”, en lugar de únicamente “if..then”.

Por ejemplo. Supongamos que esta vez queremos añadir la variable “season”
(estación del año) a unos datos que vamos a analizar. Tenemos los meses de
nacimiento de las vacas (variable llamada “MONTH”). La variable MONTH está
codificada con números, que corresponden a 1 es enero, 2 es febrero, …, 12 es
diciembre.

Con los datos anteriores queremos formar la variable “season”, de tal manera que el
número 1 sea primavera, el 2, verano, el 3, otoño, y el 4, invierno.

NOTA: Es más sencillo manejar datos cuando todas, o casi todas las variables sean
numéricas o estén codificadas con números, en lugar de utilizar nombres.

Un código, podría ser:


data season;
set expto.analisis;
if MONTH >2 and MONTH <6 then Season=1;
else if MONTH >5 and MONTH <9 then Season=2;
else if MONTH >8 and MONTH <12 then Season=3;
else Season=4;
run;

De esta manera habremos incluido la variable season a nuestra base de datos.

Introducción al manejo de datos, utilizando SAS ®


73
If…and/or…..then

Realiza acciones sólo si se cumple una condición de “y” (ambas condiciones deben
cumplirse) o de “o” (una u otra condición deben cumplirse). Más de dos condiciones
pueden incluirse en este caso de if…and/or…then.

Por ejemplo, suponemos que queremos una base de datos con todos los borregos
australianos que tengan tanto la identificación de su padre (“SIRE”), como la de su
madre (“DAM”). Un ejemplo de código, sería:
Data= pedigree;
Set austr.allsheep;
If SIRE NE ‘.’ and DAM NE ‘.’ then output;
Run;

Además, ya después de esta edición, supongamos que queremos a todos los


borregos de la raza A y de la raza B. El código podría ser:
Data razas;
Set pedigree;
If raza=A or raza=B then output;
Run;

Algunas funciones de SAS®

Fechas. Las fechas en SAS®, cuando no se encuentran en formato de fecha,


parecen simples números….y siempre (estén en formato de fecha o no) se
comportan como simples números, en cuanto a que se puede sumar o restar una
fecha de otra. Los resultados de estas operaciones corresponden a los días
transcurridos entre una fecha y otra. Esto sucede porque las fechas de SAS® son en
realidad los días transcurridos desde el 1º de enero de 1960 hasta la fecha que se
escriba.

Cuando se importan datos de fecha de otro programa hacia SAS®, es muy


importante que los datos estén en formato de fecha, para que se traduzcan a las
fechas correctas de SAS®. Es muy importante verificar SIEMPRE si se tradujeron las
fechas correctas. Algunas veces al importar fechas, resultan números en SAS®. Por

Introducción al manejo de datos, utilizando SAS ®


74
ejemplo, supongamos que tenemos las fechas de nacimiento (fechnac) y de parto
(f_parto) de unas hembras, pero están como simples números, y queremos ver
físicamente las fechas, para poder corroborar que sean correctas.

Un código que funciona, sería, por ejemplo:

Data cabras;
Set milk.cabras;
FORMAT fechnac MMDDYY8.;
FORMAT f_parto MMDDYY8.;
run;

Mes, año. En algunas ocasiones se tienen las fechas, pero es conveniente extraerle
el año y/o el mes. Existen muchas causas por las que esto puede ser importante en
las ciencias agropecuarias. Por ejemplo, el componente hato - año de nacimiento -
estación de nacimiento (llamado “herd-year-season” o hys en inglés) es casi
indispensable como parte de los modelos de evaluaciones genéticas en ganado,
porque es lo que da el componente de contemporaneidad. Para poder crear esta
variable de “hys”, con frecuencia se tienen que formar las estaciones a partir de los
meses, y extraer los años a partir de las fechas de nacimiento del ganado.

Como ejemplo, supongamos que de la fecha de nacimiento (Fechnac) queremos


extraer el año (llamado aquí “anho”) y el mes (llamado aquí “mo”). Un código podría
ser:

Data cabras;
Set milk.cabras;
Anho = YEAR(fechnac);
Mo = MONTH(fechnac);
run;

Y ¡listo!

Introducción al manejo de datos, utilizando SAS ®


75
Máximos, mínimos y sumatorias. En ocasiones se tiene una serie de variables, de
las cuales quisiéramos tener el máximo o el mínimo número obtenido, y/o su
sumatoria.

Sumatoria. Por ejemplo, imaginemos que tenemos los datos de pesos de leche
producida por unas borregas y quisiéramos conocer el total de la leche producida en
la lactancia.

Los datos de los pesos de la leche se llaman “leche1 leche2…leche n ”. Sólo para
ilustración, voy a utilizar sólo dos días de la lactancia, a los que voy a llamar “b” y “c”.
Un código podría ser:
data look;
input id b c;
cards;
1 2 5
2 2 .
3 2 8
;
run;

*!! Nótese !!!! hay un punto en el dato ausente;

data check;
set look;
add = SUM(of b,c);
run;

y el resultado en “work.check” es:


Id b C add
1 1 2 5 7
2 2 2 . 2
3 3 2 8 10

Máximos. Ahora supongamos que hay hembras que se tienen que inseminar
muchas veces para quedar preñadas. El archivo es una colección de fechas
periódicas de muestreo y en algunas fechas, el número de veces que se reporta que
la hembra ha sido inseminada, aumenta, porque no quedó cargada la vez anterior.
Una vez que la hembra queda cargada, se reporta cuantas veces fue inseminada y la

Introducción al manejo de datos, utilizando SAS ®


76
siguiente vez, ya no se reporta nada. Por lo tanto, un archivo típico se vería, más o
menos así:

Id Insem1 Insem2 Insem3 Insem4


1 2 3 . .
2 . 1 2 .
3 2 3 4 .
Etc.

El código para conocer el número máximo de inseminaciones (las que fueron


necesarias para quedar preñadas) por hembra, sería:
data ejemplo;
input id insem1 insem2 insem3 insem4;
cards;
1 2 3 . .
2 . 1 2 .
3 2 3 4 .
;
run;

data ej;
set ejemplo;
maxIns = MAX(of insem1, insem2, insem3, insem4);
run;

Mínimos. Si en lugar del número máximo, se requiere el mínimo, el proceso es el


mismo, sólo que en lugar de escribir MAX(of var1, var2, etc), habría que escribir
MIN(of var1, var2, etc.)

Recomendaciones finales

1. Siempre verifique los datos que ya se encuentren en su archivo de trabajo,


especialmente si los importó de otro programa, como Excel®, por ejemplo.
Conviene pedir un proc means para verificar que se encuentren todos los datos
y ver si sus rangos y medias son lógicos.

2. Si los rangos no son lógicos, puedes/debes pedir un “output” (con: if….lo


que parece extraño…then output) para revisar los datos directamente en un
archivo de prueba.

Introducción al manejo de datos, utilizando SAS ®


77
3. Si se va a trabajar con datos que estén en Excel®, y existen problemas
para importar los datos a SAS®, verifique que las columnas de Excel® tengan el
formato correcto. A veces, cambiar el nombre de las variables por otras mas
cortas sirve. Otras veces, cambiar el formato de guardado del archivo es útil,
como guardar como “archivo CSV”, en vez de “archivo de trabajo de Excel”.

4. Antes de efectuar un análisis o un manejo de datos, siempre crea un


archivo de respaldo y después haz tus análisis. Ya una vez que tengas el
archivo como lo desees, puedes cambiarle el nombre al archivo de trabajo para
que substituya a la versión respaldada que tenías antes de las modificaciones.
También puedes crear un archivo de prueba, con unos cuantos datos ficticios,
sólo para verificar que SAS® esté haciendo lo que tu/usted espera(s) que haga.

5. Hay casi una infinidad de sitios web que te pueden ayudar a resolver
dudas de cómo efectuar algún trabajo en SAS®. Sin embargo, la mayoría están
en inglés, pero no hay que desanimarse. Si no sabe inglés, busque de todas
maneras, pues los sitios en español son cada vez más comunes.

6. Muchas veces, la edición de datos es más fácil hacerla en Excel®, y


después importar a SAS®, pero ya con práctica, editar en SAS® se vuelve muy
conveniente.

Introducción al manejo de datos, utilizando SAS ®


78
CAPÍTULO 10

Algunos códigos de estadística

SAS® ofrece una variedad enorme de procedimientos estadísticos para ser utilizada
en todo tipo de investigación aplicada, como la que generalmente se requiere en las
ciencias agropecuarias. La gama cubre desde análisis categórico, multivariado, de
modelos de riesgo o sobrevivencia, regresión, análisis de modelos mixtos, pruebas
no paramétricas, apoyo para simulaciones, y mucho más. Constantemente se hacen
mejoras a los programas.

Sin embargo, los modelos más importantes en investigación agropecuaria, siguen


siendo los de la familia de los modelos lineales, que en SAS® se cubren
principalmente con los procedimientos GLM, REG y MIXED. En este documento se
presenta una muy breve y somera descripción de los códigos básicos más sencillos
utilizando esos tres procedimientos; además se incluyen ejemplos de códigos de los
procedimientos Univariate, Corr, y GLM para análisis multivariado.

Cada uno de los procedimientos tiene un respaldo teórico muy extenso, y su buen
uso requiere un profundo entendimiento de las bases y de los ámbitos de aplicación
correctos. Las bases son generales, y son: aleatorización, control del error (por
homogenización y/o bloqueo) y multiplicidad de repeticiones. Estos u otros conceptos
no van a ser explicados aquí; simplemente se mencionan para tratar de hacer
conciencia de la responsabilidad que le compete al usuario de un programa de
análisis estadístico. Tampoco se van a explicar los reportes (el contenido del
“Output”) que se obtienen cuando se ofrece la presentación de alguna corrida de un
ejemplo de código. La razón es porque sólo aquel que ya sabe que es lo que
significan, podrá apreciar su valor y es quien deberá/va a usarlos de todas maneras.

Introducción al manejo de datos, utilizando SAS ®


79
Si se quisiera seguir el (muchas veces tortuoso) camino del autodidacta, hay muchos
libros dedicados específicamente a los procedimientos de SAS® arriba mencionados;
por ejemplo: SAS for mixed models (2006) por Littell et al., Survival análisis using
SAS. A practical guide (1995) por Allison, Categorical data analysis using the SAS
system (2006) por Stokes et al., SAS® system for regression (2006) por Freund and
Littell, Applied multivariate statistics with SAS software (2006) por SAS publishing, y,
el clásico, SAS for linear models (2002) por Littell et al.

Los resultados de los análisis siguientes salen en la ventana del “Output”. Se


recomienda copiar y pegar en Word®, para su ulterior inspección.

Proc glm

Es para modelos lineales generales, incluyendo ANOVA, regresión y análisis de


covarianza. Maneja correctamente los datos desbalanceados en el ANOVA (los
datos están desbalanceados cuando los niveles de las variables independientes
tienen tamaños desiguales).

La orden CLASS se usa para designar las variables que son factores en el modelo.
Las variables en CLASS pueden ser numéricas o clasificatorias. Si no se incluye
CLASS, PROC GLM supondrá que las variables independientes designadas en
MODEL son numéricas y calculará un modelo de regresión en lugar de un modelo de
ANOVA.

La orden MODEL tiene la forma: variable dependiente = factor(es), que son sinónimo
de variables clasificatorias, de variables independientes, o de efectos.

La orden MEANS pide comparaciones múltiples. Después de la palabra MEANS se


deben enlistar todas las variables clasificatorias para las que se deseen
comparaciones múltiples.

Introducción al manejo de datos, utilizando SAS ®


80
Nota: En lugar de MEANS, se debe utilizar LSMEANS cuando los datos están
desbalanceados. Por esta razón, si un estudio no proviene de un diseño, sino que es
observacional (por ejemplo), será necesario siempre usar LSMEANS.

Un código de glm debe contener el nombre del archivo a analizar (DATA), el modelo
con el que se va a analizar (MODEL) y la orden de ejecutar el programa (RUN). El
código de glm puede contener otras instrucciones, por ejemplo:

Proc GLM Data = nombre_del_archivo opciones;


CLASS variable(s);
*Si no se incluyen variables clasificatorias, es decir, si no se incluye la palabra
“CLASS”, el modelo será de regresión;
*Si alguna variable aparece en MODEL como efecto, pero no se incluyó entre las
variables clasificatorias, esa variable se tomará como covariable;
MODEL variable(s)_dependiente(s) = efecto(s);
* Después de MODEL pueden ir opciones acerca de que se desea ver en el Output.
Lo más común es pedir lsmeans y stderr (least squares means y standard error) en
estudios observacionales;
* Si se escribe más de una variable dependiente, pero el formato de código no
corresponde a Multivariado, entonces SAS® hace tantos análisis univariados como
variables dependientes se escriban. Esto es útil para no tener que repetir el mismo
código para diferentes variables dependientes;
Run;

Una vez más, PROC GLM para datos balanceados, en forma general:
PROC GLM data = base_de_datos;
CLASS variables;
MODEL variable dependiente = variables independientes;
MEANS efectos /opciones; *Ver Cuadro 1;
ESTIMATE efectos/ opciones;
RUN; *En lugar de “Estimate” se puede pedir “CONTRAST”;

La orden ESTIMATE calcula el estimador puntual y el error estándar para una


combinación lineal de los parámetros en el modelo.

Introducción al manejo de datos, utilizando SAS ®


81
NOTA: En las ordenes ESTIMATE Y CONTRAST, SAS supone que los niveles de
las variables clasificatorias están en orden alfabético (lo que se consigue si se
ordenan con proc sort), sin importar el orden en que realmente estén los datos!
Si los niveles son numéricos, va a suponer que están en orden ascendente.

Ejemplo: Un experimento con un factor:

Data ejemplo;
input y factor $;
cards;
3 bajo
4 bajo
4 bajo
5 bajo
6 medio
7 medio
4 medio
3 alto
3 alto
6 alto
;
run;
proc glm;
class factor;
model y = factor;
estimate 1 0 -1;
run;

Supongamos que se requiere que se estime la diferencia "bajo – alto” (y suponemos


que el orden debe ser como se escribió en SAS®: bajo, medio y alto, para 1, 0 y -1,
respectivamente), pero lo que realmente sucede es que SAS® estima la diferencia

Introducción al manejo de datos, utilizando SAS ®


82
"alto – medio” (porque en orden alfabético tenemos alto, bajo, medio, y en este
caso, alto corresponde al 1, bajo al 0, y medio al -1).

Para obtener resultados correctos de ESTIMATE, se deben tener las variables en


orden alfabético (es decir, pedir un “PROC SORT” por la variable a analizar), o
considerar este detalle al momento de escribir el código.
Algunas de las opciones que se pueden usar con MEANS (Recuerde: “MEANS
efectos/opciones”) están en el Cuadro 1:

CUADRO 1. ALGUNAS OPCIONES DE “Means” CON EL PROCEDIMIENTO GLM.


Opción de Means Descripción
alpha = p Es el nivel de significancia que se usa en las comparaciones múltiples.
El default es 0.05.
bon Pide los t-tests de Bonferroni entre medias.
t Pide pruebas t-tests.
duncan Opción para pedir la prueba de comparaciones múltiples de Duncan.
scheffe Opción para pedir la prueba de comparaciones múltiples de Scheffe.
snk Pide la prueba de rango múltiple de Student-Newman-Keuls.
lsd Con esta opción se realizan t-tests apareadas.
tukey Realiza la prueba de rango student de Tukey.

Un ejemplo de código para un estudio con datos no balanceados:


proc glm data= my_data;
class var1 var2 var3 var4;
model VAR_DEP = Var1(Var2) Var3 Var3*Var4;
random Var1(Var2);
lsmeans Var3*Var4/stderr;
run;

Aquí se está ilustrando:

a) el uso de efectos anidados: Var1(Var2),


b) el uso de la declaración de efectos aleatorios (orden “random”), y
c) la inclusión de una interacción (Var3*Var4).

Introducción al manejo de datos, utilizando SAS ®


83
Proc mixed
Se usa en modelos lineales mixtos. El código es:

PROC MIXED DATA = nombre.archivo;


class Var1 Var2 Var3;
model Dep_Var = Var1 Var2 Var1*Var2/opciones;
random Var3;
run;
* Por supuesto, las opciones son... ¡opcionales! ;
* Antes de “Run”, generalmente se piden los least squares means (Lsmeans) de
los efectos de interés;
* Nótese que la variable aleatoria (la que se indica con RANDOM) no está
dentro del modelo. Esto es una diferencia con proc glm;

Proc univariate
Para estadísticas descriptivas: rango y percentiles, con o sin gráfica. El código es:

PROC UNIVARIATE DATA = nombre;


var variable_de_interés; *Si no se escribe esto, se dan resultados para cada
una de las variables;
OPCIONES;
run;

Para ilustrar el tipo de datos que se obtienen con un proc univariate simple, vamos a
pedir esta opción para la siguiente base de datos:
DATA ST4;
INPUT LGT OTHER PCM PDM ACTUAL;
DATALINES;
350 400 1516.8 5.0 656
850 800 2266.6 8.0 1382
1200 1100 2189.2 9.0 1666
1700 1600 2773.4 13.0 2392
2900 2800 3535.8 18.5 3901
450 500 1402.4 5.0 293
600 600 1673.0 7.5 1019
900 800 2146.6 9.0 1746
1600 1500 2243.2 10.5 2216
2000 1800 3128.0 18.0 3829
400 400 1543.2 4.5 536
750 650 1847.8 7.0 1382

Introducción al manejo de datos, utilizando SAS ®


84
1500 1500 2304.6 9.5 1706
2000 1800 2762.8 12.0 3522
3000 2800 3664.6 16.5 3506
500 500 1447.0 3.5 1019
800 800 2123.6 8.0 1382
1400 1500 2453.0 11.0 2069
1850 1700 2883.4 10.5 3386
2800 2500 2862.6 16.0 5402
400 350 1214.8 5.5 616
850 500 1707.4 7.0 979
1100 900 2272.6 9.0 2029
1800 1800 2576.8 11.0 2699
2800 2500 3178.2 16.5 4192
400 350 1414.8 5.0 656
750 700 1762.8 6.5 1342
1200 1200 1864.8 7.0 1746
1800 2000 2578.2 11.5 3382
3200 3100 3341.0 17.0 4552
;
run;

proc univariate data=ST4;


Options nodate;
run;

 
                                    The UNIVARIATE Procedure 
                                         Variable:  LGT 
 
                                            Moments 
 
                N                          30    Sum Weights                 30 
                Mean                     1395    Sum Observations         41850 
                Std Deviation       871.71551    Variance            759887.931 
                Skewness           0.68529167    Kurtosis            ‐0.6015925 
                Uncorrected SS       80417500    Corrected SS          22036750 
                Coeff Variation    62.4885671    Std Error Mean       159.15275 
 
 
                                   Basic Statistical Measures 
 
                         Location                    Variability 
 
                     Mean     1395.000     Std Deviation          871.71551 
                     Median   1200.000     Variance                  759888 
                     Mode      400.000     Range                       2850 
                                           Interquartile Range         1100 
 
 
                                   Tests for Location: Mu0=0 
 
                        Test           ‐Statistic‐    ‐‐‐‐‐p Value‐‐‐‐‐‐ 
 
                        Student's t    t  8.765164    Pr > |t|    <.0001 
                        Sign           M        15    Pr >= |M|   <.0001 
                        Signed Rank    S     232.5    Pr >= |S|   <.0001 
 
 
                                    Quantiles (Definition 5) 
 
                                     Quantile      Estimate 
 

Introducción al manejo de datos, utilizando SAS ®


85
                                     100% Max          3200 
                                     99%               3200 
                                     95%               3000 
                                     90%               2850 
                                     75% Q3            1850 
                                     50% Median        1200 
                                     25% Q1             750 
                                     10%                400 
                                     5%                 400 
                                     1%                 350 
                                     0% Min             350 
 
 
                                    The UNIVARIATE Procedure 
                                         Variable:  LGT 
 
                                      Extreme Observations 
 
                              ‐‐‐‐Lowest‐‐‐‐        ‐‐‐‐Highest‐‐‐ 
 
                              Value      Obs        Value      Obs 
 
                                350        1         2800       20 
                                400       26         2800       25 
                                400       21         2900        5 
                                400       11         3000       15 
                                450        6         3200       30 
 
 
NÓTESE, AHORA VIENE LA MISMA INFORMACIÓN PARA LA SIGUIENTE
VARIABLE:
 
                                    The UNIVARIATE Procedure 
                                        Variable:  OTHER 
 
                                            Moments 
 
                N                          30    Sum Weights                 30 
                Mean                     1315    Sum Observations         39450 
                Std Deviation      826.307741    Variance            682784.483 
                Skewness           0.65415863    Kurtosis             ‐0.649187 
                Uncorrected SS       71677500    Corrected SS          19800750 
                Coeff Variation    62.8370906    Std Error Mean      150.862463 
 

para la variable OTHER y lo mismo para cada una de las otras tres.

Ahora, se pide lo mismo, pero sólo para una de las variables, y con diagrama:
proc univariate plot data=ST4;
var actual;
histogram / normal;
run;

El resultado es el siguiente:
The UNIVARIATE Procedure 
Variable:  ACTUAL 
 
                            Moments 

Introducción al manejo de datos, utilizando SAS ®


86
 
N                          30    Sum Weights                 30 
Mean               2173.43333    Sum Observations         65203 
Std Deviation      1358.44738    Variance            1845379.29 
Skewness           0.65598565    Kurtosis            ‐0.4957413 
Uncorrected SS      195230373    Corrected SS        53515999.4 
Coeff Variation    62.5023717    Std Error Mean      248.017425 
 
 
              Basic Statistical Measures 
 
    Location                    Variability 
 
Mean     2173.433     Std Deviation               1358 
Median   1746.000     Variance                 1845379 
Mode     1382.000     Range                       5109 
                      Interquartile Range         2367 
 
 
           Tests for Location: Mu0=0 
 
Test           ‐Statistic‐    ‐‐‐‐‐p Value‐‐‐‐‐‐ 
 
Student's t    t  8.763228    Pr > |t|    <.0001 
Sign           M        15    Pr >= |M|   <.0001 
Signed Rank    S     232.5    Pr >= |S|   <.0001 
 
 
Quantiles (Definition 5) 
 
Quantile      Estimate 
 
100% Max        5402.0 
99%             5402.0 
95%             4552.0 
90%             4046.5 
75% Q3          3386.0 
50% Median      1746.0 
25% Q1          1019.0 
10%              636.0 
5%               536.0 
1%               293.0 
0% Min           293.0 
 
The SAS System                                                                                 
 
The UNIVARIATE Procedure 
Variable:  ACTUAL 
 
        Extreme Observations 
 
‐‐‐‐Lowest‐‐‐‐        ‐‐‐‐Highest‐‐‐ 
 
Value      Obs        Value      Obs 
 
  293        6         3829       10 
  536       11         3901        5 
  616       21         4192       25 
  656       26         4552       30 
  656        1         5402       20 
 
 
   Stem Leaf                     #  Boxplot 
      5 4                        1     | 
      4 6                        1     | 
      4 2                        1     | 
      3 5589                     4     | 
      3 44                       2  +‐‐‐‐‐+ 
      2 7                        1  |     | 

Introducción al manejo de datos, utilizando SAS ®


87
      2 0124                     4  |  +  | 
      1 7777                     4  *‐‐‐‐‐* 
      1 0003444                  7  +‐‐‐‐‐+ 
      0 5677                     4     | 
      0 3                        1     | 
        ‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+ 
    Multiply Stem.Leaf by 10**+3 
 
 
                       Normal Probability Plot 
    5250+                                             *++++ 
        |                                         * +++ 
        |                                       *+++ 
        |                                 ***+*+ 
        |                               **++ 
    2750+                            ++*+ 
        |                        ++**** 
        |                     ++*** 
        |                 **** * 
        |         * * *++* 
     250+     *    +++ 
         +‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+‐‐‐‐+ 
             ‐2        ‐1         0        +1        +2 
 
 
 
 
The SAS System                                                                                 
 
The UNIVARIATE Procedure 
Fitted Distribution for ACTUAL 
 
 
Parameters for Normal Distribution 
 
Parameter   Symbol   Estimate 
 
Mean        Mu       2173.433 
Std Dev     Sigma    1358.447 
 
 
      Goodness‐of‐Fit Tests for Normal Distribution 
 
Test                  ‐‐‐Statistic‐‐‐‐   ‐‐‐‐‐p Value‐‐‐‐‐ 
 
Kolmogorov‐Smirnov    D     0.15681903   Pr > D      0.059 
Cramer‐von Mises      W‐Sq  0.13565870   Pr > W‐Sq   0.036 
Anderson‐Darling      A‐Sq  0.75871079   Pr > A‐Sq   0.044 
 
 
 
Quantiles for Normal Distribution 
 
          ‐‐‐‐‐‐‐Quantile‐‐‐‐‐‐‐ 
Percent    Observed    Estimated 
 
    1.0     293.000    ‐986.7878 
    5.0     536.000     ‐61.0138 
   10.0     636.000     432.5130 
   25.0    1019.000    1257.1745 
   50.0    1746.000    2173.4333 
   75.0    3386.000    3089.6922 
   90.0    4046.500    3914.3537 
   95.0    4552.000    4407.8804 
   99.0    5402.000    5333.6545

Introducción al manejo de datos, utilizando SAS ®


88
Las explicaciones del significado de los reportes pueden ser consultados en la
literatura que dimos al principio, o vía Internet en cualquier buscador.

Algunas opciones de PROC UNIVARIATE (después de cada uno, escribir las


variables) se encuentran en el Cuadro 2.

CUADRO 2. ALGUNAS OPCIONES A USAR CON EL PROCEDIMIENTO Univariate


Opción de proc univariate Descripción
By Calcula estadísticas separadas por cada grupo
determinado por BY (requiere que estén en orden
descendente).
Freq Especifica una variable para contener la frecuencia de
observaciones.
Histogram Crea una gráfica (nunca es muy buena la calidad de las
gráficas de SAS®) del histograma de una variable.
ID Especifica los valores extremos de una o más variables.
VAR Selecciona las variables a analizar. En ese orden van a
aparecer en el reporte (output).

Proc reg
Análisis de regresión (cuadrados mínimos ordinarios).

PROC REG usa la orden MODEL para definir el modelo teórico de la relación entre
las variables independientes y dependiente. Es posible tener más de una orden de
MODEL (esto es útil cuando se está tratando de encontrar el modelo que mejor se
ajusta a los datos).

Si usted necesita usar los valores que se hayan creado de la regresión (tales como
valores predichos, residuales, etc.) para otros propósitos además de gráficas, se
puede definir una nueva base de datos que contenga estos valores. Use el comando
OUTPUT OUT = nombre de la nueva base de datos.

Se pueden efectuar pruebas de F parciales para determinar si una o más variables


son (simultáneamente) cero usando la orden TEST. Si usted quiere realizar una

Introducción al manejo de datos, utilizando SAS ®


89
prueba, escriba: TEST var = 0; Si quiere realizar dos pruebas, escriba: TEST var1 =
0 var2 = 0, etc.

La forma general es:

PROC REG DATA = Nombre_del_archivo opciones;


MODEL Variable(s))_dependiente(s) = regresores
/ opciones;
TEST var1=0 var2=0;
PLOT yvariable*xvariable <=symbol> </options>; *Ver Cuadro3;
OUTPUT OUT=new name;
Run; *lo que está en color violeta es opcional
también;

Una lista de algunas de las opciones que se pueden solicitar para incluirse en una
gráfica (que se pide con “PLOT”) se muestra en el Cuadro 3.

CUADRO 3. ALGUNAS OPCIONES DE LA INSTRUCCIÓN PLOT EN EL


PROCEDIMIENTO REG.
Opciones de Plot Descripción
P Imprime el valor observado de la variable dependiente, el valor
predicho (P.) y el residual (R.) para cada observación en la base
de datos *
R Imprime lo mismo que la orden P más los errores estándares de
los valores predichos y residuales, los residuales estudentizados
(STUDENT.), y el estadístico D de Cook.
Clm Imprime intervalos de confianza del 95% para la media de cada
observación.
Cli Imprime intervalos de predicción del 95% para la media de cada
observación.
alpha = p Especifica el nivel de confianza. El default es 0.05.
influence Pide residuales, residuales estudentizados, valores de
“leverage” (sesgo), tasas de covarianza, diferenciales de ajuste,
y diferencias en las betas
cp Calcula la estadística CP de Mallow para cada modelo
seleccionado.
* Nótese que el punto (.) es parte del nombre de la variable: P., R., Student.

Introducción al manejo de datos, utilizando SAS ®


90
Para presentar un ejemplo de la información que reporta SAS para Proc Reg,
utilizamos nuevamente la “misteriosa” base de datos que vimos para proc univariate.
Se va a correr únicamente un modelo de regresión lineal simple:
PROC REG data =ST4;
options nodate nocenter;
MODEL LGT = ACTUAL/P;
RUN; QUIT;
 
 
The SAS System                                                                                 3 
 
The REG Procedure 
Model: MODEL1 
Dependent Variable: LGT 
 
Number of Observations Read          30 
Number of Observations Used          30 
 
 
 
 
 
                             Analysis of Variance 
 
                                    Sum of           Mean 
Source                   DF        Squares         Square    F Value    Pr > F 
 
Model                     1       19786328       19786328     246.18    <.0001 
Error                    28        2250422          80372 
Corrected Total          29       22036750 
 
 
Root MSE            283.49994    R‐Square     0.8979 
Dependent Mean     1395.00000    Adj R‐Sq     0.8942 
Coeff Var            20.32258 
 
 
                        Parameter Estimates 
 
                     Parameter       Standard 
Variable     DF       Estimate          Error    t Value    Pr > |t| 
 
Intercept     1       73.43933       98.86082       0.74      0.4638 
ACTUAL        1        0.60805        0.03875      15.69      <.0001 
 
 
 
 
The SAS System                                                                                 4 
 
The REG Procedure 
Model: MODEL1 
Dependent Variable: LGT 
 
               Output Statistics 
 
            Dependent    Predicted 
     Obs     Variable        Value     Residual 
 
       1     350.0000     472.3215    ‐122.3215 
       2     850.0000     913.7673     ‐63.7673 
       3         1200         1086     113.5459 
       4         1700         1528     172.1001 

Introducción al manejo de datos, utilizando SAS ®


91
       5         2900         2445     454.5495 
       6     450.0000     251.5986     198.4014 
       7     600.0000     693.0444     ‐93.0444   
       8     900.0000         1135    ‐235.0983 
       9         1600         1421     179.1172 
      10         2000         2402    ‐401.6708 
      11     400.0000     399.3552       0.6448 
      12     750.0000     913.7673    ‐163.7673 
      13         1500         1111     389.2238 
      14         2000         2215    ‐214.9988 
      15         3000         2205     794.7301 
      16     500.0000     693.0444    ‐193.0444 
      17     800.0000     913.7673    ‐113.7673 
      18         1400         1331      68.5009 
      19         1850         2132    ‐282.3037 
      20         2800         3358    ‐558.1367 
      21     400.0000     447.9994     ‐47.9994 
      22     850.0000     668.7223     181.2777 
      23         1100         1307    ‐207.1770 
      24         1800         1715      85.4281 
      25         2800         2622     177.6063 
      26     400.0000     472.3215     ‐72.3215 
      27     750.0000     889.4452    ‐139.4452 
      28         1200         1135      64.9017 
      29         1800         2130    ‐329.8715 
      30         3200         2841     358.7076 
 
 
Sum of Residuals                           0 
Sum of Squared Residuals             2250422 
Predicted Residual SS (PRESS)        2769198

Para seleccionar el modelo de regresión múltiple más adecuado

Si se desea obtener información para tratar de seleccionar el mejor modelo de


regresión, se puede utilizar Proc RSQUARE (que calcula la R2 utilizando todas las
combinaciones de las variables especificadas) o Proc STEPWISE (que mete y saca
variables al modelo, para ver como se comportan en presencia o ausencia de las
otras variables), con la misma estructura de código:

PROC RSQUARE data=nombre; *alternativamente, Proc Stepwise;


MODEL y = x1 x2 x3 x4;
run;

Proc Stepwise efectúa selección de modelos de regresión. El valor de α default es


0.5 para alpha entry (el α para que entre la variable a verificar) y 0.15 para alpha stay (el
α para que se quede la variable). Se pueden añadir las opciones SLE para
seleccionar el valor deseado para alpha entry y/o SLS para seleccionar el valor
deseado para alpha stay .

Introducción al manejo de datos, utilizando SAS ®


92
Alternativamente, con el código de Proc Reg se puede solicitar alguna opción que
ayude a seleccionar el modelo de regresión. Esto se hace añadiendo la opción
SELECTION = option después de MODEL, de la siguiente manera:

Proc Reg data = Nombre;


Model Y = x1 x2 x3 ...xn/SELECTION = RSQUARE;
Run;

Desde luego, Y representa el nombre de la variable dependiente y las X1...Xn el


nombre de las variables independientes.
Otras opciones para SELECTION, además de RSQUARE, son:

Stepwise Realiza la regresión stepwise (las variables entran y/o salen paso a
paso).
Forward Realiza la selección forward (las variables entran una a una).
Backward Realiza la selección backward (del modelo completo, las variables se
van eliminando –o quedando- una a una).
MAXR Selecciona el modelo usando la máxima mejoría en R2.

Proc corr
Este procedimiento sirve para obtener una matriz de correlaciones entre las
variables. Este procedimiento calcula el coeficiente de correlación de Pearson y
produce estadísticas descriptivas – media, desviación estándar, mínimos y máximos
– para todas las variables de par en par, enlistadas en la orden VAR. También
calcula un p-value para probar si la correlación verdadera entre las dos variables es
cero. La orden WITH puede usarse para reducir el número de coeficientes de
correlación que se computen; en este caso, los pares de variables provienen de
aquellas enlistadas en la orden VAR cruzados con las enlistadas en la orden WITH.

Ejemplo:
proc corr data= nombre;
var var1 var2 var3;

Introducción al manejo de datos, utilizando SAS ®


93
*va a dar la matriz de correlaciones, de par en par, para estas variables,
así como su nivel de significancia;
run;

PROC CORR data = nombre_del_archivo opciones; *Ver Cuadro 4;


VAR variables;
WITH variables;
OPCIONES DE PROC CORR;
RUN;

Una lista de las opciones que se pueden utilizar con Proc corr se encuentra en el
Cuadro 4.

CUADRO 4. ALGUNAS OPCIONES QUE SE UTILIZAN CON EL PROCEDIMIENTO CORR.


Opciones de PROC CORR Descripción
Cov Imprime la matriz de covarianzas
nosimple Suprime la impresión de las estadísticas descriptivas
noprob Suprime la impresión de los valores de prob (p-values)

Proc glm para análisis de varianza multivariado

Ejemplo de código en donde se tienen dos variables dependientes (“Fertilid” y


“Prod_total”) y tres variables independientes (“Region”, “Raza”, y “Estacion”). Se
están probando los efectos de las interacciones con un MANOVA o análisis de
varianza multivariado:

PROC GLM data=archivero.archivo;


class Region Raza Estacion;
model Fertilid Prod_total = Region Estacion Raza*Region
Raza*Estacion;
manova h=Raza*Region;
manova h=Raza*Estacion:
run;

Introducción al manejo de datos, utilizando SAS ®


94
Otras órdenes básicas

“Where” en proc means


En el procedimiento “means”, se puede insertar la orden “where” para delimitar las
características del grupo de observaciones a las que se les van a extraer las
estadísticas descriptivas.
Por ejemplo, para extraer las estadísticas de vacas que produzcan más de 25 litros
de leche por día:

proc means data =vacas n mean median std var;


where leche > = 25;
var edad Intparto leche ;
run;

Proc boxplot
Se usa proc boxplot para obtener gráficos de bigotes. Por ejemplo, para la variable
leche” por niveles de “region”. Esto requiere que los datos s ordenen por region con
proc sort.

proc sort data=vacas;


by region;
run;

proc boxplot data=vacas;


plot leche*region / boxstyle=schematic boxwidth=10;
run;

Prueba de Chi-cuadrada con proc freq


Para efectuar la prueba de chi-cuadrada y obtener las frecuencias esperadas:

proc freq data=nombre;


table variable1*variable2/chisq expected;
run;

Introducción al manejo de datos, utilizando SAS ®


95
Introducción al manejo de datos, utilizando SAS ®
96
CAPÍTULO 11

Algunos códigos de diseños experimentales

En este último capítulo se ofrece una lista de códigos que normalmente se utilizan en
diseños experimentales (Hinkelmann y Kempthorne, 1994). El procedimiento a
utilizarse para este propósito es proc glm (también podrían escribirse exactamente
igual para proc anova), con inicio y término del código tal como se describió en el
Capítulo 10, es decir, todos los códigos empiezan con “PROC GLM DATA =
NOMBRE;”, y finalizan con “RUN;”. Para utilizar correctamente estos códigos, como
en el capítulo anterior, también se requiere de un sólido respaldo en estadística.

Las abreviaturas que se van a utilizar son:


Tratamiento = Trt = τ
Repetición = Rep
Bloque = Bl = β
Variable de respuesta = Y
Hilera = α
Columna = ρ
Error experimental = ε
Error observacional = η

1. Diseño completamente al azar


Sencillo:

Y ij = μ + τi + ε  ij

CLASS Trt;
MODEL Y=Trt;

Introducción al manejo de datos, utilizando SAS ®


97
Con submuestreo:
Y ijk = μ + τi + ε ij + η ijk
donde ε ij representa el error experimental, y η ijk representa el error observacional.

CLASS Trt Rep;


MODEL Y = Trt Rep(Trt);
TEST H = Trt E = Rep(Trt);

De esta manera se prueba Ho: Treat1 = Treat2 = …= Treatn , y se especifica que las
unidades experimentales, es decir, las repeticiones se encuentran anidadas dentro
de los tratamientos, por lo que Rep(Trt) es una descripción del componente error
experimental, ε ij .

2. Comparación de tratamientos
Los códigos son iguales tanto para CONTRAST, como para ESTIMATE. Se recuerda
que los coeficientes deben de sumar cero.

Por ejemplo, utilizando contrastes para tres tratamientos:

CLASS Trt;
MODEL Y= Trt;
CONTRAST “C1”
Trt 2 -1 -1;
CONTRAST “C2”
Trt 0 1 -1;
CONTRAST “C3”
Trt -1 0 1;

Cuando se pueden utilizar polinomios ortogonales, también se pueden obtener


tendencias de efectos lineales, cuadráticos, cúbicos, etc., siempre y cuando haya por
lo menos dos, tres, cuatro, etc. tratamientos, respectivamente. Por ejemplo, para
cuatro tratamientos obtenemos las sumas de cuadrados para efectos lineales,

Introducción al manejo de datos, utilizando SAS ®


98
cuadráticos, y cúbicos, utilizando exactamente los coeficientes como se muestran a
continuación:

CLASS Trt;
MODEL Y=Trt;
CONTRAST “Trt Lineal”
Trt -3 -1 1 3;
CONTRAST “Trt Cuadratico”
Trt 1 -1 -1 1;
CONTRAST “Trt Cubico”
Trt -1 3 -3 1;

La disposición de los coeficientes no es aleatoria para la determinación de las


diferentes tendencias. Por ejemplo, los coeficientes para tres tratamientos que
prueban las tendencias lineal y cuadrática, son:

Lineal: -1 0 1
Cuadrática: 1 -2 1

Para más de tres ó cuatro tratamientos (cuyos coeficientes se ofrecieron aquí), se


deberá consultar un buen libro de estadística para obtener los coeficientes que se
necesiten.

3. Comparaciones múltiples
El código es el mismo para cualquier prueba de comparación. Por ejemplo, para
utilizar Duncan:

CLASS Trt;
MODEL Y=Trt;
MEANS Trt/DUNCAN;

4. Diseño de bloques completos al azar


Sencillo:

Introducción al manejo de datos, utilizando SAS ®


99
Y ijk = μ +β i +τ j +ε  ijk
CLASS Bl Trt;
MODEL Y=Bl Trt;
MEANS Trt;

Con submuestreo:

Y ijk = μ +β i +τ j +βτ ij +η ijk

CLASS Bl Trt;
MODEL Y = Bl Trt Bl*Trt;
TEST H = Trt E = Bl*Trt;
MEANS Trt;

5. Diseño de bloques al azar generalizados

Y ijk = μ +β i +τ j +βτ ij +ε  ijk

CLASS Bl Trt;
MODEL Y = Bl Trt BL*Trt;
MEANS Trt BL*Trt;

6. Diseño de bloques incompletos, incluyendo el diseño de bloques completos


al azar con observaciones perdidas
Y ijk = μ +β i +τ j +ε  ijk

CLASS Bl Trt;
MODEL Y = Bl Trt;
LSMEANS Trt;

Introducción al manejo de datos, utilizando SAS ®


100
7. Diseño de cuadro latino
Y ijkl = μ + αi + ρj + τk + ε ijkl
CLASS Hilera Columna Trt;
MODEL Y = Hilera Columna Trt;

8. Diseño de cuadro latino con repeticiones


Para: Y ijk(l) = μ + α i + ρ j + γ k + τ l + ε ijk(l)

CLASS Rep Hilera Columna Trt;


MODEL Y = Rep Hilera Columna Trt;

Para: Y ijk(l) = μ + α i + ρ ij + γ k + τ l + ε ijk(l)

CLASS Rep Hilera Columna Trt;


MODEL Y = Rep Hilera(Rep) Columna Trt;

Para: Y ijk(l) = μ + α i + ρ ij + γ ik + τ l + ε ijk(l)

CLASS Rep Hilera Columna Trt;


MODEL Y = Rep Hilera(Rep) Columna(Rep) Trt;

9. Diseño de parcelas divididas (ejemplos)


El superíndice “A” indica que el efecto corresponde al factor A, mientras que un
superíndice “B” indica que corresponde al factor B.

Para un diseño de factor A completamente al azar y factor B en bloques completos al


azar:

Y ijk = μ + α i + εA ij + β k + (αβ) ik + εB ijk


CLASS SUJETO A B;
MODEL A SUJETO(A) B A*B;
TEST H = A E = SUJETO (A);

Introducción al manejo de datos, utilizando SAS ®


101
Para un diseño de factor A en bloques completos al azar y factor B en bloques
completos al azar:
Y ijk = μ + ri + α j + ε A ij + β k + (αβ) ik + εB ijk
donde r es el número de bloques.

CLASS REP A B;
MODEL Y = REP A REP*A B A*B;
TEST H=A E = REP*A;
Esto ultimo para obtener un valor de F que pruebe Ho: α1 = α2 = …= αa

Para un diseño de factor A completamente al azar y factor B en cuadro latino:


Y ijk(l) = μ + α i + εA ij +γ γk + β l + (αβ) il + (αγ) ik +εB ijk(l)

CLASS Sujeto Orden A B;


MODELO A Sujeto(A) Orden B A*B A*Orden,
TEST H = A E = Sujeto(A);

Para un diseño de factor A en cuadro latino y factor B en bloques completos al azar:


Y ijkl = μ + ρ i + γ j + α k + ε A ijk + β l + (αβ) kl + εB ijkl

CLASS Hilera Columna A Hilera*Columna*A B A*B;


TEST H = A E = Hilera*Columna*A;

Para un diseño de parcela dividida, tal que:


Y ijk = μ + ri + α j + ε A ij +β k + εB ik + (αβ) jk εAB ijk

CLASS Rep A B;
MODEL Y = Rep A Rep*A B Rep*B A*B;
TEST H=A E = Rep*A;
TEST H=B E = Rep*B;

Introducción al manejo de datos, utilizando SAS ®


102
Eso fue todo…
Quisiera insistir en que si no se tienen bases firmes en estadística, se busque el
apoyo técnico de un profesional desde la planeación del experimento o estudio, se
tomen en cuenta sus opiniones durante el seguimiento de los trabajos, y que los
análisis se realicen bajo un consenso entre el investigador o grupo de investigadores
y el profesional de apoyo estadístico. !!Buena suerte!! *

*
Se han hecho todos los esfuerzos porque la información y los códigos sean correctos. Sin
embargo, es posible que exista algún error de imprenta o que las versiones de SAS®
cambien en sus requerimientos de codificación, por lo que no nos hacemos responsables de
que todos y cada uno de los códigos funcionen.

Introducción al manejo de datos, utilizando SAS ®


103
APÉNDICE

BASE DE DATOS DE UN EXPERIMENTO DE MAÍZ


EVALUACIÓN DE GENOTIPOS DE MAÍZ

Trat. Rep. IAF ALTP ALTM NoH RTFF RTFS RFSH RFST RFSM RH:T RH:M RT:M
No No i cm cm No kg/ha kg/ha kg/ha kg/ha kg/ha r r r
1 1 3.97 249 127 14 53125 13252 2916 4990 4906 58 59 102
1 2 4.84 252 129 14 54167 15553 3083 5928 5535 52 56 107
1 3 6.13 254 132 13 56250 15251 3273 5764 5598 57 58 103
1 4 5.11 249 121 13 51042 12728 2784 4600 4000 61 70 115
2 1 3.7 266 143 14 55208 14441 2462 6750 6380 36 39 106
2 2 5.05 258 129 14 47917 10885 3272 7646 6812 43 48 112
etc. etc. etc.
7 2 4.13 247 164 13 58333 15725 2826 6438 4760 44 59 135
7 3 3.61 258 164 14 54167 13324 2908 6802 5119 43 57 133
7 4 5.48 250 151 13 58333 15370 2440 6384 4126 38 59 155

IAF índice de área foliar


ALTP altura de la planta
ALTM altura de la mazorca
NoH número de hojas
RTFF rendimiento total de forraje fresco (kg/ha)
RTFS rendimiento total de forraje seco (kg/ha)
RFSH rendimiento forraje seco de hoja (kg/ha)
RFST rendimiento forraje seco de tallo (kg/ha)
RFSM rendimiento forraje seco de mazorca (kg/ha)
RH:T relación hoja:tallo
RH:M relación hoja:mazorca
RT:M relación tallo:mazorca
(Datos parciales no publicados, utilizados con permiso del autor: López-Guerrero, 2006)

Introducción al manejo de datos, utilizando SAS ®


104
LITERATURA CITADA

Allison, P. D. 1995. Survival analysis using SAS®. A practical guide. Cary, NC: SAS
Institute Inc.

Delwiche, L. D. and Slaughter, S. J. 2000. The little SAS book: A primer. 2nd Ed. Cary,
NC: SAS Institute Inc.

Freund, R. and Littell, R. C. 2000. SAS System for regression. 3rd Ed. New York,
Chichester, Brisbane, Toronto, Singapore. Wiley Series in Probability and
Statistics.

Hinkelmann, K. and Kempthorne, O. 1994. Design and analysis of experiments. Vol


1. Introduction to experimental design. New York, Chichester, Brisbane,
Toronto, Singapore. Wiley Interscience.

Khattree, R. and Naik, D. N. 1999. Applied multivariate statistics with SAS software.
2nd Ed. Cary, NC: SAS Institute Inc.

Littell, R., Milliken, G. A., Stroup, W. W. and Wolfinger, R. D. 2006. SAS for mixed
models. 2nd Ed. Cary, NC: SAS Institute Inc.

Littell, R., Stroup, W. W. and Freund, R. 2002. SAS for linear models. Cary, NC: SAS
Institute Inc.

López-Guerrero I. 2006. Compendio aún no publicado de experimentos sobre


rendimiento de forraje de maíces en el Estado de Veracruz, realizados en
1999.

Stokes, M. E., Davis, C. S. and Koch, G. E. 2001. Categorical data analysis using the
SAS system. Cary, NC: SAS Institute Inc.

Introducción al manejo de datos, utilizando SAS ®


105
RECONOCIMIENTOS

El material que se presenta ha sido recopilado en gran parte del sitio de internet del
Insituto SAS: www.sas.com, de la página (ya no disponible) del Dr. Oliver
Schabenberger* y de varios libros, entre los que destaca: The Little SAS Book, 2ª
edición, por Lora D. Delwiche y Susan J. Slaughter, y en el uso y práctica del
programa SAS.

*
Actualmente el Dr. Schabenberger labora en el desarrollo y mejora de programas de
SAS/STAT en el Instituto SAS, en Carolina del Norte.

Introducción al manejo de datos, utilizando SAS ®


CRÉDITOS EDITORIALES

COORDINADOR DE PRODUCCIÓN
Vicente E. Vega Murillo

COORDINADOR DEL COMITÉ EDITORIAL


Valentín A. Esqueda Esquivel

EDICIÓN
Valentín A. Esqueda Esquivel

FORMACIÓN
Claudia Perdomo Montes

REVISIÓN TÉCNICA
Isaac Meneses Márquez
Rubén Loeza Limón
Bertha L. Rueda Maldonado
Ángel Ríos Utrera
Alfonso Ávila Durán
Julio C. Vinay Vadillo

Introducción al manejo de datos, utilizando SAS ®


INTRODUCCIÓN AL MANEJO DE DATOS
UTILIZANDO SAS®
No está permitida la reproducción total o parcial de esta publicación, ni la transmisión
de ninguna forma o por cualquier medio, ya sea electrónico, mecánico, fotocopia, por
registro u otros métodos, sin el permiso previo y por escrito de la institución.

Instituto Nacional de Investigaciones Forestales, Agrícolas y Pecuarias.


Av. Progreso Núm. 5
Barrio Santa Catarina, Del. Coyoacán
04010, México, D.F.
Tel.: (55) 38 71 87 00

Primera edición 2009


Impreso en México.
ISBN 978-607-425-104-3
Tiraje: 500 CD´S

Esta obra se terminó el 15 de mayo de 2009 en:


Centro de Investigación Regional Golfo Centro
Ocampo 324 Desp. 322,
Col. Centro
91700, Veracruz, Ver.
Tel. (229) 931 87 84 y 932 06 68

CAMPO EXPERIMENTAL LA POSTA


Km. 22.4 Carretera Veracruz-Córdoba
Paso del Toro, Ver.
Apdo. Postal No. 898 Suc. “A”
91700, Veracruz, Ver.
Tel. y Fax: (229) 934 77 38 y 938 44 53
correo electrónico: gonzalez.josejuan@inifap.gob.mx
garcia.teresa@inifap.gob.mx

La cita correcta es:

García P., T. B. e I. López G. 2009. Introducción al manejo de datos, utilizando


SAS®. Campo Experimental La Posta. INIFAP. CIRGOC. Libro Técnico Núm. 47.
Veracruz, México. 105 p.

Introducción al manejo de datos, utilizando SAS ®

También podría gustarte