Sunteți pe pagina 1din 15

2 Capitulo: Ficheros DataSet

El importador de SAS es slo un pre-programa que genera un programa SAS, en particular llama al PROC IMPORT y lo prepara para crear un dataset. Si el fichero de datos planos no es un buen fichero o sencillamente si queremos leer una parte del fichero el PROC IMPORT no es el mtodo adecuado de introducir los datos. La finalidad del paso DATA es la creacin y manipulacin de ficheros de datos SAS para poder analizarlos en un posterior paso PROC. El paso DATA comienza con la sentencia DATA y permite crear archivos de datos de diversas formas: A) Los datos se introducen en el mismo fichero de sintaxis: DATA nombre_fichero; INPUT...; DATALINES; datos ; El archivo SAS creado es el nombrado en la sentencia DATA Ejemplo: Creacin de un conjunto de datos SAS temporal
DATA alumnos; /* Paso data */ INPUT Nombre $ 1-11 Sexo $ 12 EDAD 14-15 Peso 17-18 Talla 20-22; CARDS; /* DATALINES es la forma ms correcta en vez de CARDS */ Alicia M 14 69 112 Tomas H 11 57 85 Felipe H 16 72 150 Julia M 11 51 50 ; PROC SORT; BY NOMBRE; PROC PRINT; RUN;

El cdigo anterior crea el archivo temporal alumnos. El archivo alumnos no es un fichero del sistema operativo, si no un fichero del entorno SAS. Al finalizar la sesin SAS alumnos desaparece. Los datos en el fichero alumnos se escriben despus del comando DATALINES y se leen con el formato definido en el comando INPUT. El procedimiento PROC SORT ordena el archivo alumnos segn la variable Nombre. El procedimiento PROC PRINT lo presenta en la pantalla OUTPUT.

Statistical Analysis System

DATA

En SAS tiene definidos gran cantidad de formatos los principales son el numrico y el alfanumrico o variables carcter que se denotan por el smbolo $ despus del nombre de la variable: Nombre $ EDAD Variable cadena o alfanumrica. Variable numrica.

Los comentarios es SAS se declaran por la secuencia /* y terminan con la secuencia */. B) Los datos estn en un disco en modo texto (ASCII) DATA nombre_archivo; INFILE...; INPUT...;

El archivo SAS creado es el nombrado en la sentencia DATA. Ejemplo:


DATA COCHES; /* DataSet Temporal */ INFILE "A:\COCHES.DAT"; /* Da el camino y nombre del fichero ASCII */ INPUT CONSUMO 1-2 MOTOR 3-6 CV 7-9 PESO 10-13 ACEL 14-17 ANO 18-19 ORIGEN 20 CICLINDR 21; /* Describe como son las variables del fichero */ PROC PRINT; RUN;

Las sentencias que hemos empleado han sido, DATA nombre_fichero; INPUT...; DATALINES; datos ; DATA nombre_archivo; INFILE...; INPUT...;

El archivo de datos SAS creado, DataSet, es el nombrado en la sentencia DATA. En el primer caso la instruccin DATALINES le dice a SAS que los datos estn en el mismo fichero de sintaxis y en el segundo la sentencia INFILE dice en que fichero

1-

Statistical Analysis System estn los datos. El camino y nombre del comando INFILE operativo en el que estemos trabajando.

DATA depende del sistema

En SAS los dataset pueden ser temporales o permanentes. El nombre de un fichero de datos SAS sigue la siguiente sintaxis: Nombre_libreria.Nombre_fichero En el ejemplo anterior hemos creado el fichero Coches. Internamente el nombre del dataset es: WORK.Coches Nota: Todos los ficheros temporales se guardan en la librera WORK. Una librera SAS es equivalente a una carpeta en Windows. SAS da un nombre simblico a un espacio de un disco duro, USB, etc. ,que en Windows es una carpeta, para poder referirse a el sin tener que depender del sistema operativo donde est instalado el sistema SAS. Para poder crear dataset permanentes estos tienen que estar asociados a una librera SAS que no sea la libreria WORK. En el sistema SAS hay dos formas de crear libreras: Por medio del icono que lleva a la siguiente ventana.

2-

Statistical Analysis System

DATA

De esta forma para asociar la carpeta E:\DatosSAS a la librera SAS de nombre PRUEBA, habra que escribir:

Para realizar esta asignacin mediante sintaxis se utiliza la sentencia LIBNAME, LIBNAME nombre_librera Direccin de la carpeta en el SO; En el ejemplo: LIBNAME PRUEBA E:\DatosSAS; La sentencia LIBNAME es cdigo libre, es decir no est asociada a ningn paso DATA ni PROC. Al finalizar la sesin SAS se elimina la asociacin entre el nombre simblico de la librera y el espacio fsico. En el ejemplo anterior la sintaxis,
LIBNAME FF 'A:\'; /* El nombre de la librera es arbitrario */ DATA FF.COCHES; /* DataSet Permanente*/ INFILE "A:\COCHES.DAT"; INPUT CONSUMO 1-2 MOTOR 3-6 CV 7-9 PESO 10-13 ACEL 14-17 ANO 18-19 ORIGEN 20 CICLINDR 21; PROC PRINT; RUN;

3-

Statistical Analysis System El fichero que se crea es, FF.COCHES

DATA

Nombre librera

Nombre fichero

C) Los datos estn en un disco en modo SAS: LIBNAME referencia subdirectorio; DATA librera.nombre_fichero;

El archivo SAS creado es el nombrado en la sentencia DATA Ejemplo;


LIBNAME GIG 'A:\'; /* El nombre de la librera es simblico */ DATA GIG.LOLO; SET GIG.COCHES; PROC PRINT DATA=GIG.LOLO; RUN;

Nota: Los tipos de cdigo en SAS son: Cdigo asociado al paso DATA. Cdigo asociado al paso PROC. Cdigo libre (no asociado ni al paso DATA, ni al paso PROC).

4-

Statistical Analysis System

DATA

Sintaxis de la sentencia DATA


La sentencia DATA se utiliza para crear, leer y modificar los archivos de datos. La sintaxis es:
DATA nombre_archivo1 (opcin1 opcin n) nombre_archivon (opcin1 opcin n)

Los archivos pueden ser de dos tipos: Temporales Desaparecen al terminar la sesin de trabajo. Se almacenan por defecto en la librera WORK. Fijos DATA alumnos; DATA FF.COCHES; Se guardan en un espacio fsico de un dispositivo. Crea un archivo SAS temporal. Crea un archivo SAS fijo que se llama FF.COCHES en la librera FF dentro del entorno SAS y COCHES.SS7 al terminar la sesin de SAS en la direccin definida como FF.

En un nico paso DATA se pueden crear varios ficheros a la vez y para saber donde se va a guardar los datos es necesario utilizar la orden OUTPUT. La orden OUTPUT nombre_archivo no es imprescindible si slo se quiere crear un archivo. Basta entonces con la orden DATA archivo, que lleva implcita la grabacin automtica del archivo cada vez que se crea una observacin con las rdenes que se vern a continuacin.

DATA alumnos FF.alumno2;

Crea

dos

ficheros

alumnos

que

es

temporal y FF.alumno2 que es fijo.


output alumnos; output FF.alumno2;

Almacena los datos en alumnos. Almacena los datos en FF.alumno2.

5-

Statistical Analysis System

DATA

Sintaxis
DATA nombre_archivo1 (opcin1 opcin n) nombre_archivon (opcin1 opcin n)

Opciones ms comunes: DROP = KEEP = RENAME = LABEL = COMPRESS = lista de variables que no se incluirn en el fichero de datos SAS. lista de variables que se incluirn en el fichero de datos SAS. renombra las variables al leerlas (variable_antigua = variable_nueva) etiqueta que se asigna al fichero de datos. NO/YES especifica si las variables del fichero son de longitud fija o variable. FIRSTOBS = OBS = n indica en que lnea se tiene que empezar a leer los datos. n indica en que observacin hay que dejar de leer los datos.

Si no se quiere crear un fichero de datos SAS utilizamos la sentencia DATA _NULL_;


DATA nuevo2 (drop=nombre talla); SET alumnos; PROC PRINT; RUN;
Obs

DATA nuevo2 (keep=sexo edad peso); SET alumnos; PROC PRINT; RUN;
Sexo EDAD Peso

1 2 3 4

M H M H

14 16 11 11

69 72 51 57

6-

Statistical Analysis System

DATA

Sentencia DATALINES;
Se utiliza para leer los datos situados en el propio fichero de sintaxis. Si se utiliza el formato fijo los datos deben escribirse a partir de la primera columna, en formato libre no es necesario. La sentencia CARDS es equivalente a DATALINES. DATALINES; Lneas de datos ; Como caso particular, cuando los datos contienen el smbolo punto y coma (;) es necesario utilizar la sentencia CARDS4 (DATALINES4). Observad el siguiente ejemplo: DATA pesos; INPUT IDpaciente $ Semana1 Semana8 Semana16; perdida= Semana1 - Semana16; CARDS4; 24;77 195 177 163 24;31 220 213 198 24;12 135 125 116 ;;;; PROC PRINT;
RUN;

Sentencia INFILE
La sentencia INFILE se utiliza para describir el fichero ASCII: nombre del fichero, localizacin, tipo, etc.. Desde el fichero declarado en la sentencia INFILE, se leern las diferentes variables por medio de la sentencia INPUT. INFILE 'nombre_archivo' opciones; Opciones: DLM='carcter de separacin'. Por si los datos estn separados por un carcter de separacin distinto del espacio en blanco, como por ejemplo, comas, punto y coma, el cdigo de tabulador, (09x), etc. FIRSTOBS=nmero de lnea Primer n de lnea que se quiere leer.

7-

Statistical Analysis System OBS=n de lnea

DATA ltima lnea que se quiere leer si la lectura de datos con INPUT es secuencial.

LRECL=longitud del registro lgico Se puede sustituir por la opcin del sistema LRECL=n, donde .Y

MISSOVER

Impide leer datos del registro siguiente cuando hay valores missing.

Ejemplo: DATA puntuacion; INFILE datalines delimiter=','; Input test1 test2 test3; DATALINES; 91,87,95 97,,92 ,1,1 ; PROC PRINT; RUN;

Nota: El argumento DATALINES en la sentencia INFILE, permite utilizar las opciones propias de INFILE con la sentencia DATALINES:

8-

Statistical Analysis System

DATA

Sentencia INPUT
Describe el formato de lectura de los datos contenidos en el fichero externo o escritos con CARDS. La sentencia INPUT admite formato libre y formato fijo. La forma general es: INPUT var1 especificaciones1 var4 especificaionesn; FORMATO LIBRE En el formato libre cada valor va separado uno del otro por medio de un delimitador, normalmente un espacio en blanco. Tiene las siguientes restricciones: INPUT nombre_var1 nombre_var2 nombre_varn; Los valores de las variables debe estar separadas al menos por un espacio. Las variables carcter se especifican por el signo $ despus del nombre de la variable, y no pueden exceder de 8 caracteres y no se permiten blancos. El espacio en blanco no se considera missing y los missing hay que representarlos por un punto. En las variables cadena no hay cdigo de dato perdido. Nota: Por defecto, los nmeros decimales se represen por el punto decimal, si se representan con coma decimal hay que definir su formato de lectura como formato COMMA. FORMATO COLUMNAS: En el formato columna, que es un formato fijo, se define el nombre de la variable seguido por la localizacin de la variable en el fichero definida por la primera y ltima columna que ocupa y si es necesario su especificacin . La especificacin es el formato de lectura que en el SAS se conoce por informat en contraposicin con el formato de escritura que se conoce por format. INPUT var1 especificacion1 varn especificacin; Las opciones ms comunes son: Hay que leer todas las variables. El orden de lectura debe ser el del fichero.

9-

Statistical Analysis System Forma General a-b $ a-b W.d $W. 1-3 $ 1-3 5.2 $15. Ejemplo Descripcin

DATA

Variable numrica almacenada en las columnas 1 a 3 Variable cadena almacenada en las columnas 1 a 3 Variable numrica con 5 dgitos y 2 decimales. Variable cadena de 15 caracteres.

commaw.d Comma10. Variable numrica con carcter decimal coma. bzw.d Bz4.2 Lee blancos como ceros: 2 45 20.45

CONTROLES DE CURSOR A veces se quiere dirigir con exactitud el puntero de lectura, indicndole a qu lnea y columna debe ir en cada momento para leer una determinada variable. Los siguientes smbolos se pueden utilizar en la sentencia INPUT: @n +n #n / @ Mueve el cursor a la columna n (puede ser una variable o un nmero). Avanza n columnas. Mueve el cursor a la lnea n. Salta a la lnea siguiente Puesto al final de la sentencia mantiene el cursor en la lnea actual, para que se puedan utilizar varias sentencias INPUT sobre el mismo conjunto de datos. @@ Al final de la lnea, mantiene el cursor en la misma lnea para leer varios casos en la misma lnea. Ejemplo 1: DATA coco; INPUT edad 1-2 sexo $ 3 peso 4-6 .1; DATALINES; 24H804 12M337 15M384

10 -

Statistical Analysis System ;

DATA

Se ha creado el archivo SAS temporal coco, con las variables y valores siguientes: EDAD 24 12 15 SEXO H M M PESO 80.4 33.7 38.4

Ejemplo 2: DATA fichas; INPUT nombre $10. altura 4.1 ingresos comma8. peso bz4.1 ingr2 comma7.3; DATALINES; Pio Baroja 165 200,000 7 5 0,200 Pedro Rius 172 175,657 8 9 0,175 PROC PRINT; RUN; Observar el diferente tratamiento de ingresos e ingr2.

Nota 1 Los . son ledos como valores missing. Cuando acaba de leer un caso, salta a la lnea siguiente. Si no encuentra el valor de una variable, lo busca en la lnea siguiente. Si son varias variables con el mismo informat, se puede escribir INPUT (var1-var7) (informat)

Ejemplo 3: DATA yeti; INPUT a b c; CARDS; 12 2 4 1 3 3 5 6 5 . 8 8 ; Grabar en el archivo temporal yeti:

11 -

Statistical Analysis System a 12 1 5 b 2 3 . c 4 3 8

DATA

DATA yeti; INPUT edad sexo $ peso @@; CARDS; 24 H 80.4 12 M 33.7 15 M 38.4 ; PROC PRINT; RUN; Leer correctamente los datos, grabndolos en el archivo temporal yeti. Si no se escribe @@ para cada caso salta a la lnea siguiente (en el siguiente ejemplo leera dos casos.) DATA alien; INPUT edad / sexo $ peso ; DATALINES; 24 H 80.4 12 M 33.7 ; PROC PRINT; RUN;

Nota 2. Se pueden mezclar todos los tipos de lectura: DATA uno; INPUT edad 1-2 @3 sexo $ / DATALINES; 24H 804 1.75 12M 337 1.60 15M 384 1.70 ; PROC PRINT; RUN; peso 1-3 .1 altura;

Leera correctamente los datos, grabndolos en el archivo uno

12 -

Statistical Analysis System Nota 3:

DATA

Si se quieren aprovechar las opciones de INFILE pero escribiendo los datos por teclado, se puede utilizar la sentencia INFILE CARDS; DATA; INFILE cards FIRSTOBS=2 OBS=2; INPUT a b; DATALINES; 1 6 9 6 45 4 3 1 ; PROC PRINT; RUN; Lee a b 9 6 Nota 4: Si se ponen varios INPUT seguidos, en cada uno salta de lnea, a menos que se ponga @ al final: DATA; INPUT a; INPUT b @; INPUT c; DATALINES; 3 4 5 2 1 4 5 6 7 ; PROC PRINT; RUN; lee: OBS A 1 3 2 4

B 2 6

C 1 7

Recuperar un fichero de datos SAS


Cuando los datos estn en un fichero permanente SAS la forma de leer este fichero es por medio de los comandos, Los datos estn en un disco en modo SAS: LIBNAME referencia subdirectorio; DATA librera.nombre_fichero; SET GIG.COCHES;

13 -

Statistical Analysis System El archivo SAS creado es el nombrado en la sentencia DATA Ejemplo 4:

DATA

LIBNAME GIG 'A:\'; /* El nombre de la librera es simblico */ DATA GIG.LOLO; SET GIG.COCHES; PROC PRINT DATA=GIG.LOLO; RUN;

14 -

S-ar putea să vă placă și