SAS Tutorial: ficha Carga de archivos delimitados
25 de enero 2008 por: Blink 7
Imagine que se les da una lista de los principales donantes de Canadá político y desea cargarlo en SAS para su posterior análisis. La lista está en un archivo de texto con campos delimitados por caracteres de tabulación. SAS Enterprise Guide (EG) ofrece asistentes para importar automáticamente una gran variedad de formatos de archivo, pero con estos GUI se adelanta la posibilidad de automatización o de procesamiento adicional durante la importación. El uso de código para cargar los datos ofrece varias ventajas:
- Capacidad de redirigir los datos de múltiples conjuntos de datos
- Capacidad de limpiar y modificar datos durante el tiempo de carga
- Capacidad para eliminar datos no deseados
- Portabilidad y reusabilidad
Pre-Requisitos
- V9.x SAS o SAS Enterprise Guide 4.x
- Conocimientos básicos de Paso de datos de SAS
- Conocimientos básicos de cómo cargar y ejecutar programas SAS
- Conocimientos básicos de formato de caracteres numéricos y de
- SAS acceso de lectura / escritura de espacio de archivo
Descargas
- Ficha de proyecto del archivo (por ejemplo, solo, contiene todos los programas)
- SAS Programa: tab1
- SAS Programa: tab2
- SAS Programa: tab3
- SAS Programa: tab4
- SAS Programa: tab5
- Lista de donantes (archivo ficha)
Tome 1: Basic Loader
Abra la tab1.sas programa SAS (los que utilizan SAS Enterprise Guide 4 alternativamente puede abrir el proyecto LoadTabDelimit archivo y haga doble clic en el icono de la tab1 código de la ventana del diseñador del proyecto SAS).

Como se puede ver en la pantalla de arriba, SAS lee archivos de texto usando el paso de datos. Un mínimo de dos declaraciones se necesitan para cargar correctamente un archivo de texto:
- INFILE - La declaración INFILE especifica el archivo de texto para ser cargado. La ruta completa se puede especificar (como se hizo en este ejemplo) o una ruta relativa al directorio de documentos de SAS por defecto puede ser utilizado.
- INPUT - La declaración de entrada especifica los campos que deben ser leídos desde el archivo de texto y cómo deben ser leídos.
Primero echemos un vistazo a la declaración INFILE. Para que esto funcione ejemplo, usted probablemente tendrá que cambiar la ruta de 'r: \ namelist.txt a la ubicación del archivo delimitado por tabuladores. También hay dos opciones incluidas en la declaración INFILE:
- DLM - La opción de DLM permite al usuario establecer el delimitador entre los campos en un archivo. En este caso hemos especificado '09 'x como el delimitador, que es la representación hexagonal del carácter de tabulación. Otros delimitadores comunes son la coma y el espacio. Delimitadores debe especificarse entre comillas simples. Si la opción de DLM no está incluido, SAS asume el delimitador es un espacio único
- DSD - La opción de DSD instruye el paso de datos para tratar a delimitadores consecutivos como un valor vacío para la variable actual. Sin esta opción, SAS simplemente saltar a la orden del día, los datos de campo y lo leyó en la corriente de datos variables de paso, lo que podría hacer que el archivo misalign a las variables de datos y carga de forma incorrecta. DSD también quita las comillas que rodean al leer los datos desde ficheros de texto.
A continuación, echemos un vistazo a la instrucción de entrada. Los nombres de variables se crean para almacenar cada uno de los campos que se deben leer de forma secuencial en el conjunto de datos. Existen varias variantes de la sintaxis de INPUT. La sintaxis de este ejemplo se especifica exactamente cómo cada variable debe ser leído. Por ahora, el código es instruir a SAS a leer todos los datos en los campos de texto que son un máximo de 16 caracteres de largo ($ 16).. Hay muchas formas alternativas de leer estos campos, algunos de los cuales serán cubiertos más adelante.

Ejecutar el tab1 código debería dar lugar a un conjunto de datos idéntica a la captura de pantalla anterior.
Toma 2: Actualización de los tipos de datos
Tab1 cargado todos los campos como texto de 16 caracteres, pero que pueden no ser apropiados para los campos puramente numérico. En primer lugar, suponga que desea filtrar las personas que son menores de 18 (como lo haremos más adelante). Si la edad se deja en formato de caracteres, se filtran las personas de 10-17, pero no a los 2-9 años de edad, ya que los dígitos 2, 3, 4, ..., 9 tienen un valor ASCII mayor que el número 1 en 18. Usted puede remediar el problema mediante la conversión del campo de texto a numérico antes de realizar comparaciones numéricas, pero no es tan fácil de leer el campo directamente en una variable numérica.
En segundo lugar, alguien puede estar tentado a la lista de afiliación a un partido como "Partido Conservador de Canadá" en lugar de simplemente "conservadores". El partido de largo nombre del formulario es de 25 caracteres de largo y se truncará si se lee en un 16-variable de carácter.

Para resolver estos problemas, cambie la variable edad para leer los datos como un número de 3 dígitos (3.) Y cambiar la parte variable para leer los datos como un 32-variable de carácter ($ 32)..

Ejecute el tab2 código. El encabezado de la columna de edad debería contener ahora un símbolo circular de color azul, mientras que los datos de edad columna se alinea a la derecha. Esto indica que la columna contiene datos numéricos.
Toma 3: Extracción de la línea de título
Los archivos de texto entrantes a menudo contienen los nombres de campo en la primera línea. Esto es innecesario, ya que los nombres de las variables se definen dentro de la instrucción INPUT del paso DATA. Por defecto, la línea del título se lee en los datos, que no es deseable. Existen varios tipos de lógica que se puede utilizar para quitar las líneas de título, pero si está seguro de que la línea del título estará siempre en la primera línea (es decir, sin líneas de encabezado en blanco), entonces el enfoque más fácil es simplemente la salida de la primera línea . Esto se puede lograr utilizando _N_, registro de SAS entrada del contador. Cuando _N_ = 1, los datos no se de salida al conjunto final de datos.

Un subconjunto de si la declaración se utilizó para probar el valor de _N_. Esta declaración toma la forma general
SI
Si la condición se evalúa a falso, el rendimiento de flujo de datos del programa paso a la cima sin ejecutar ninguno de los códigos debajo de la subdivisión si. En este caso, el subconjunto de si la declaración se evaluará como cierto sólo si el registro de entrada es mayor que uno, lo que significa la afirmación implícita de salida sólo se activa si se lee el registro no es el primer registro de la entrada.

Ejecute el tab3 código y asegurarse de que la salida no contiene los nombres de cabecera (ver arriba).
Tome 4: Extracción de datos incorrectos
Finalmente, un programador SAS se encontrará con dos tipos de datos no deseados:
- Los datos que pueden salvarse o por lo menos debe ser marcado
- Los datos que son absolutamente inútiles y pueden ser descartados
En términos generales, esta última categoría debería ser minimizado a casi cero, ya que hay pocos casos en que arrinconamiento de datos sin necesidad de análisis no afectan el producto final. Pero supongamos que, para este ejercicio, que la información no es simplemente la donación de útiles, a menos que contiene un nombre y apellido. El tab3 de salida contiene un residente de Montreal con el apellido "Smith", pero no nombre de acompañamiento. Podemos deshacernos de este registro y cualquier registro, como por la combinación de la lógica condicional con los comandos LENGTHN y DELETE.

LENGTHN devuelve el número de caracteres que no son en blanco en una cadena. Si la comparación LENGTHN evalúa a cero podemos estar seguros de que se está evaluando el campo es nulo o bien se compone de los caracteres en blanco. El comando DELETE impide que el registro actual de ser por escrito a los datos de salida establecido.

Ejecute el código tab4 y garantizar que el registro de salida contiene siete discos. Ninguno de los registros en blanco debe contener nombre y apellido o (ver arriba)
Take 5: Filtrado de datos
Por último, debemos encontrar una manera de tratar con datos que no es muy útil, pero posiblemente puede ser corregida. En cuanto a nuestros datos, es poco probable que un menor de edad sería un contribuyente financiera pesada para cualquier partido en particular, aunque es igualmente improbable que alguien de superar 120 años de antigüedad. Por el momento puede ser mejor para separar estos registros de los otros datos para la evaluación adicional. Por suerte, SAS hace fácil al permitir que los datos procesados para ser enviados a los conjuntos de datos múltiples de salida. Las siguientes modificaciones deben hacerse al código del tab4
- La declaración de apertura de datos debe especificar múltiples conjuntos de datos, uno de los datos puros y uno de los datos que necesita ser investigado
- La orden de salida debe ser explícitamente definidos. Los datos ya procesados debe ser dirigida a uno de los conjuntos de datos basados en una condición que determinará si los datos que requiere más investigación

Ver la captura de pantalla anterior. En la parte superior del código, la declaración de datos ahora define dos conjuntos de datos:
- tab_v5 almacenará los registros que no requieren modificación
- tab_v5_reject almacenará los registros de la requieren mayor investigación
Ahora mire la parte inferior del código. Hay dos comandos salida explícita, cada uno seguido del nombre del conjunto de datos. Los datos se escriben en tab_v5 si la edad de la persona en el registro es de entre 18 y 120. De lo contrario, los datos se escriben en tab_v5_reject. La ejecución de cualquier instrucción de salida se supone que el registro no ha sido eliminado a través de la lógica añadido en tab4.


Ejecute el tab5 código. Dos conjuntos de datos deben ser producidos - uno con 6 registros con edades dentro del rango de 18-120 y la otra con un solo registro con una edad fuera de este rango.
Hay equipos de software y demos para el análisis estadístico. Para obtener información de software SAS y tutoriales, recibe el libro en línea de ayuda. El software de Microsoft Office incluye un análisis estadístico en Excel, pero este programa hace maravillas. Cuando la compra de software, recoger software de seguridad antivirus. El antivirus que tiene todas las últimas definiciones de virus de la web es de Norton AntiVirus. En el desarrollo de telefonía de hoy, es una necesidad de invertir en un aparato de telefonía por Internet.








